2013-01-11 82 views
0

我在Laravel創建了一個應用程序。 我最初的.htaccess是:.htaccess在Laravel返回一個簡單的重定向500

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 
</IfModule> 
<IfModule mod_rewrite.c> 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

它工作正常域api.viglug.org。 我添加了m.forum.viglug.org域(具有與api.viglug.org相同的根目錄)。 此時與調用api.viglug.org和m.forum.viglug.org完全相同。 我想用m.forum.viglug.org文件夾api.viglug.org/mobile所以我認爲這將與此的.htaccess工作過:

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 
</IfModule> 
<IfModule mod_rewrite.c> 
    RewriteCond %{HTTP_HOST} m\. [NC] 
    RewriteRule ^(.*)$ index.php/mobile/$1 [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

我錯了。如果我使用m.forum.viglug.org,它將不斷返回錯誤500,而api.viglug.org按預期工作。 我該如何解決這個問題?

+0

在您的Apache或PHP錯誤日誌中是否有任何內容顯示?通常當一個PHP腳本給出一個500時,這是因爲有一個致命錯誤,它會被記錄到一個文件中。你也可以嘗試暫時讓錯誤輸出到頁面,用'ini_set('display_errors',true)' – IMSoP

+0

嘗試'RewriteCond%{HTTP_HOST}^m。 [NC]'而不是'RewriteCond%{HTTP_HOST} m \。 [NC]' – shawndreck

+0

@IMSoP:這是在Apache error.log中顯示的內容:[Fri Jan 11 19:10:55 2013] [error] [client 93.33.245.47]請求超出了可能的10個內部重定向的限制配置錯誤。如果需要,使用'LimitInternalRecursion'來增加限制。使用'LogLevel debug'來獲得回溯。 – Fale

回答

1

原來重寫只能運行在不存在作爲真正的文件或目錄的文件,由於這兩個條件:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

您是否嘗試過加入您的附加規則上面這兩個條件呢?

# Mobile site 
RewriteCond %{HTTP_HOST} m\. [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/mobile/$1 [L] 

# Normal site 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

500錯誤消失了,但重寫規則不起作用,因爲它提供了index.php頁面(沒有參數) – Fale

+0

那我,不管怎麼說,Laravel都是用來在index.php的末尾提取和使用pathinfo的,我沒有這個框架的經驗,所以不能再幫忙了,爲了檢查重寫本身是否正常工作,試試將目標更改爲測試文件,例如'test.php?type = mobile&path = $ 1'並且拋出'$ _GET'數組。 – IMSoP