2015-07-12 158 views
2

我試圖重寫我的URL和一些正在工作,但另一個(這是一個額外的目錄級別深)產生500內部服務器錯誤。我不知道爲什麼會發生這種情況,並且由於各種原因無法啓用日誌記錄。Apache2 RewriteRule 500內部服務器錯誤

我的.htaccess文件看起來是這樣的:

Options +FollowSymLinks 
RewriteEngine On 

# Rewrite account/order.php 
RewriteRule ^account/order/([a-z0-9]+)/.+$ /account/order.php?order_id=$1 [L] 

# Rewrite advertiser.php 
RewriteRule ^advertiser/([a-z0-9]+)/.+$ /advertiser.php?advertiser_id=$1 [L] 

# Remove .php from URL 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

的重寫規則advertiser.php可能看起來像這樣的網址:http://domain.com/advertiser/1234

這一切正常。

但是,我對account/order.php的重寫規則沒有。它會產生500錯誤。該URL可能如下所示:http://domain.com/account/order/1234

我可以看到的唯一區別是重寫規則中有另一個工作目錄。我錯過了什麼可能會導致此錯誤?

謝謝!

+0

嘗試改變該兩個規則:重寫規則^帳戶/順序/([A-Z0-9] +)/.+$ /account/order.php?order_id=$1 [R ,L] RewriteRule^account/order /([a-z0-9] +)/.+$ /account/order.php?order_id=$1 [R,L] – martinezjc

回答

0

不確定爲什麼你在模式結尾有額外的.+。嘗試這種代碼:

ErrorDocument 404 default 
Options +FollowSymLinks 
RewriteEngine On 

# Rewrite account/order.php 
RewriteRule ^account/order/([a-z0-9]+)/?$ account/order.php?order_id=$1 [L,QSA,NC] 

# Rewrite advertiser.php 
RewriteRule ^advertiser/([a-z0-9]+)/?$ advertiser.php?advertiser_id=$1 [L,QSA,NC] 

# Remove .php from URL 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php [L] 
+1

修正了它。爲什麼?我承認我對正則表達式並不是很有經驗,所以我不完全確定爲什麼我最後會多加「。+」。但是,我也看到你在括號中添加了QSA和NC。有什麼不同? –