2

我的 htaccess 中有以下代码

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

按照我的说法$aa = some-example,我应该$id = 123使用 PHP

但我收到以下错误

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 文件工作正常

http://example.com/abc/someexample?id=123
4

2 回答 2

1

我认为您在此行的破折号之前缺少一个空格:

RewriteRule .?- [S=2]

应该:

RewriteRule .? - [S=2]

编辑:为什么你甚至有这个规则?尝试删除它。

据我所知,如果请求与特定文件不匹配,您就是在告诉 apache 跳过接下来的两条规则,这会导致 404 而不是重写。

您可能还想在友好的 404 页面末尾添加一条规则,以防请求的 url 与您的重写正则表达式不匹配。

于 2013-07-08T06:25:59.387 回答
1

感谢瑞恩,

改变我的

RewriteRule .?- [s=2]

RewriteRule ./ - [s=2]

帮助我得到了我想要的东西

再次感谢瑞恩。

于 2013-07-08T07:28:08.203 回答