2012-09-02 41 views
1

我不明白什麼是錯的我正則表達式在我的Apache重寫規則:零個或一個尾隨正斜槓在我的正則表達式

RewriteRule ^(.*)\/?$ $1.php?%1 [L] 

當去到url http://mysite.com/page1/,我得到一個錯誤。但是,如果我改變了正則表達式在我的重寫規則

RewriteRule ^(.*)\/$ $1.php?%1 [L] 

的URL http://mysite.com/page1/工作完全正常。我認爲問號意味着前一個模式的零或一個匹配。爲什麼我的問號不像所述的那樣工作?

+0

哦,我想正則表達式的工作,因爲我得到一個「請求超出限制10個內部重定向由於可能的配置錯誤。如果需要,使用'LimitInternalRecursion'來增加限制。使用'LogLevel debug'來獲得回溯。「 – John

回答

2

正則表達式^(.*)\/?$實際上會匹配任何字符串 - 你問「任何字符串,或者跟一個斜線或後面沒有斜槓」。因此,如果斜線是可選的,它將把任何請求變成無限重寫循環。您可能需要RewriteCond篩選出已經.php結束的請求。

0

讓我解釋多一點:

  1. 首先通過重寫/第1頁/到的東西page1.php中
  2. [L]說: 「停在這裏,然後重新啓動新的URL重寫」
  3. 第二次重寫/page1.php到page1.php.php?什麼
  4. 等等...