我的.htaccess
中有以下内容Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^task/(.*)/?$ index.php?mode=task&id=$1 [L]
RewriteRule ^(.*)/?$ index.php?mode=$1 [L]
如果包含最后一行,无论在网址中添加什么,都会将$ _GET ['mode']设置为 index.php 。如果没有包含最后一行,或者如果我将它设置为index.php?mode = home,那么它可以正常工作,但是没有捕获。
我不知道问题是什么,但它可能很简单。如果其他人可以花一点时间引导我,那就太好了。谢谢!
答案 0 :(得分:1)
当您将其应用于/task/123
时,会发生这种情况,(假设URI不存在):
^task/(.*)/?$
匹配,以便将URI重写为index.php?mode=task&id=123
index.php?mode=task&id=123
^task/(.*)/?$
不匹配,什么都不做^(.*)/?$
匹配,因此URI会被重写为index.php?mode=index.php
您需要做的是为第二条规则添加条件:
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^(.*)/?$ index.php?mode=$1 [L]