2017-08-25 71 views
2

這是我的Laravel-5.4代碼,我面臨着問題。我創建的測試laravel項目,兩頁回家 & 關於我們和映射使用Apache抗宿主(www.test.com)
當我打www.test.com它加載的文件路徑正確的索引頁,但是當我嘗試打www.test.com/about它顯示404錯誤。但是當我打這樣的URL www.test.com/index.php/about頁加載正常 我不知道它的問題是在我的代碼或Apache配置或任何ot她.htaccess設置:Laravel頁面重定向不起作用

控制器:

public function index(){ 
    return view('pages.index'); 
} 
public function about(){ 
    return view('pages.about'); 
} 

路線:

// Home Page 
Route::get('/','[email protected]'); 
// About Us Page 
Route::get('/about','[email protected]'); 

的Apache的conf:

ServerAdmin [email protected] 
    ServerName test.com 
    ServerAlias www.test.com 
    DocumentRoot /var/www/html/test/public/ 

的.htaccess

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes If Not A Folder... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 

    # Handle Authorization Header 
    RewriteCond %{HTTP:Authorization} . 
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
</IfModule> 
+1

? –

+0

@BagusTesa我的.htaccess 選項-MultiViews RewriteEngine敘述在 #重定向結尾的斜槓如果不是文件夾... 的RewriteCond%{} REQUEST_FILENAME! -d 重寫規則^(。*)/ $/$ 1 [L,R = 301] #拉手前端控制器... 的RewriteCond%{REQUEST_FILENAME}!-d 的RewriteCond%{REQUEST_FILENAME}!-f 重寫規則^ index.php [L] #Handle授權標題呃 RewriteCond%{HTTP:Authorization}。 RewriteRule。* - [E = HTTP_AUTHORIZATION:%{HTTP:Authorization}]

+1

請將它添加到您的問題.. –

回答

2

你可能有未啓用了mod_rewrite的一個問題。

嘗試與a2enmod rewrite啓用它,然後重新啓動Apache /etc/init.d/apache2 restart

給看看該answer

OR

如果它不工作。
這可能來自Apache conf:etc/apache2/httpd.conf
這個article會比我更好地解釋它。

您可能需要編輯:

<Directory "/var/www/html"> 
    ... 
    AllowOverride None 
    ... 
</Directory> 

<Directory "/var/www/html"> 
    ... 
    AllowOverride All 
    ... 
</Directory> 

並重新啓動Apache /etc/init.d/apache2 restart

OR

如果仍然沒有工作嘗試做一些chmod 0755在你的Laravel的項目上。

+0

我已經完成了上面的工作,但它不起作用 –

+0

我已經添加了另一種可能的解決方案。希望這會起作用。 –

+0

感謝兄弟的作品!非常感謝 –

1

您是否在apache上安裝並啓用了mod_rewrite? 爲了使用mod_rewrite您可以在終端上鍵入以下命令:重新啓動的Apache2後

a2enmod rewrite 

/etc/init.d/apache2 restart 

service apache2 restart 

這是.htaccess我有我的public/目錄:

<IfModule mod_rewrite.c> 
<IfModule mod_negotiation.c> 
    Options -MultiViews 
</IfModule> 

RewriteEngine On 

# Redirect Trailing Slashes... 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

# Handle Front Controller... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

此外,您還可以共享`.htaccess`文件中的`public`目錄編輯/etc/apache2/sites-enabled/000-default

<Directory /var/www/> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    allow from all 
</Directory> 
+0

我重寫並重新啓動Apache仍然亞姆面臨的問題 –

+0

@HarishKarthick你有沒有在添加'AllowOverride all'? –

+0

** AllowOverride all **在目錄中,它完美的工作謝謝兄弟它的工作原理!非常感謝 –