2011-12-02 25 views
1

所以我想要2個不同的重寫規則。國防部重寫與2類似重寫cond

第一:

http://mydomain.com/affiliate/533/1 - >http://mydomain.com/affiliate/index.php?member=533&campaign=1

二:

http://mydomain.com/affiliate/533/2/1 - >http://mydomain.com/templates/2/step1.php?member=533

下的.htaccess給500內部服務器錯誤。我究竟做錯了什麼?

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^affiliate/([0-9]+)/([0-9]+) affiliate/index.php?member=$1&campaign=$2 [NC] 
RewriteRule ^affiliate/([0-9]+)/([0-9]+)/step([0-9])+) templates/$2/step$3.php?member=$1 [NC] 
+0

([0-9] +)/([0-9] +)/ step([0-9])+)?您的第二個基地網址中沒有「步驟」。還有一個額外的右括號。也許你的意思是^ affiliate /([0-9] +)/([0-9] +)/([0-9] +)? –

回答

0

我剛剛檢查了你的配置,我的error.log告訴我「RewriteEngine不允許在這裏」。

將「AllowOverride All」添加到該測試目錄後,錯誤消失。 然而,在https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule Apache手冊說:

要啓用重寫引擎在這種情況下,你需要設置 「RewriteEngine敘述論」和「有FollowSymLinks」必須啓用。如果 您的管理員已禁用覆蓋FollowSymLinks的 用戶目錄,則無法使用重寫引擎。出於安全原因,此限制是必需的。

所以正確的方法是設置一個並在那裏設置FollowSymLinks選項。

Alex。

0

你只是忘記了括號,這反過來,當阿帕奇試圖在最後的正則表達式,產生一個錯誤,從而內部錯誤,這。OUPUTS一個500所以這裏的版本,應該工作:

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^affiliate/([0-9]+)/([0-9]+) affiliate/index.php?member=$1&campaign=$2 [NC] 
RewriteRule ^affiliate/([0-9]+)/([0-9]+)/step(([0-9])+) templates/$2/step$3.php?member=$1 [NC] 
+0

除了添加了一個額外的關閉邊界之外,其他區別在哪裏? –

+0

對不起,我沒有完成我的答案(感謝我的妻子) –

1

剛剛檢查您的示例與乾淨的服務器安裝。

只要我不使用Options +FollowSymlinks.htaccess它工作正常,只有AllowOverride FileInfo

當使用Options +FollowSymlinks.htaccess我需要AllowOverride Options FileInfo在我的<Directory >條目。

所以,它似乎不是一個錯誤。

+0

但是,然後再次,Apache手冊說:「要在此上下文中啓用重寫引擎,您需要設置」RewriteEngine On「和」Options FollowSymLinks「必須是如果您的管理員已禁用用戶目錄的FollowSymLinks覆蓋,則不能使用重寫引擎,因爲安全原因,此限制是必需的。所以根本原因是不允許FollowSymLinks,應該在上下文中設置。 –