我的htaccesss中有以下代码
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .?- [S=2]
RewriteRule ^abc/(.*)/(.*)$ index.php?aa=$1&bb=$2 [NE,L,QSA]
RewriteRule ^abc/(.*)$ index.php?aa=$1 [NE,L,QSA]
当我通过以下网址时
http://example.com/abc/some-example?id=123
按照我的说法,我应该在PHP中使用$aa = some-example
和$id = 123
但我收到以下错误
Not Found
The requested URL /abc/[S=2] was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
以上.htaccess文件在我传递url时工作正常
http://example.com/abc/someexample?id=123
提前感谢。
答案 0 :(得分:1)
我认为你在这一行的短划线前错过了一个空格:
RewriteRule .?- [S=2]
应该是:
RewriteRule .? - [S=2]
编辑:为什么你甚至有这条规则?尝试删除它。
据我所知,如果请求与特定文件不匹配,则告诉apache跳过接下来的两条规则,这会导致404而不是重写。
如果请求的网址与您的重写正则表达式不匹配,您可能还希望在最后为友好的404页面添加规则。
答案 1 :(得分:1)
感谢Ryan,
改变我的
RewriteRule .?- [s=2]
到
RewriteRule ./ - [s=2]
帮助我得到了我想要的东西
再次感谢Ryan。