我认为这是一个简单的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/////////////////////
我希望加载网址:
的index.php?STORE_NAME = e95_airport
当我调用以下网址时,它可以正常工作:
商品/ e95_airport /一些页-其他超的index.php
我已禁用所有其他mod_rewrite规则,以防我的.htaccess文件中的其他地方发生冲突。这里有没有人可以诊断我的重写规则有什么问题?非常感谢任何帮助!
答案 0 :(得分:3)
问题是该网站正在进入循环,因为您将其重定向到基本相同的地址。
好的,所以你要用重写来改变它,但它重写它的URL仍然与表达式匹配。
mod_rewrite的工作方式是,一旦重写了URL,它就会有效地用新URL重新查询自己。因此,如果您的新网址仍然与表达式匹配,它将进入循环。
为什么它停在21斜杠?这是因为Apache将检测它何时处于循环中,并且如果它自己重新查询20次则停止。
答案 1 :(得分:0)
正如@Spudley所说,你进入了一个循环。
看看你的重写规则,并查看你想要的结果,我会说重写规则也是错误的。它应该是这样的:
RewriteRule ^store/([a-z0-9_\-]+)/?([a-z0-9_\-]+)?(.*)?$ index.php?store_name=$1 [L]