[英]mod_rewrite freakishly appends 21 slashes to URL
我有我認為是一個簡單的mod_rewrite規則。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^store/([a-z0-9_\-]+)/?([a-z0-9_\-]+)?(.*)?$ store/$2?store_name=$1$3 [L]
但是,當我轉到以下網址時:
http://www.mydomain.com/store/e95_airport/
它變成:
http://www.mydomain.com/store/e95_airport/////////////////////
我期待加載的URL:
的index.php?STORE_NAME = e95_airport
當我調用以下URL時,它工作正常:
存儲/ e95_airport /一些頁面,其他超的index.php
我已經禁用了所有其他mod_rewrite規則,以防我的.htaccess文件中的其他地方發生沖突。 這里有沒有人可以診斷我的重寫規則有什么問題? 任何幫助是極大的贊賞!
問題是該網站正在進入循環,因為您將其重定向到基本相同的地址。
好的,所以你要用重寫來改變它,但它重寫它的URL仍然匹配表達式。
mod_rewrite的工作方式是,一旦重寫了URL,它就會有效地用新URL重新查詢自己。 因此,如果您的新URL仍然與表達式匹配,它將進入循環。
為什么它停在21斜杠? 這是因為Apache將檢測它何時處於循環中,並且如果它自己重新查詢20次則停止。
正如@Spudley所說,你進入了一個循環。
期待你的重寫規則,並查看你想要的結果,我會說重寫規則也是錯誤的。 它應該是這樣的:
RewriteRule ^store/([a-z0-9_\-]+)/?([a-z0-9_\-]+)?(.*)?$ index.php?store_name=$1 [L]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.