当url中使用连字符( - )时,Htaccess不工作

时间:2013-07-08 06:15:59

标签: php .htaccess url mod-rewrite http-status-code-404

我的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

提前感谢。

2 个答案:

答案 0 :(得分:1)

我认为你在这一行的短划线前错过了一个空格:

RewriteRule .?- [S=2]

应该是:

RewriteRule .? - [S=2]

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

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

如果请求的网址与您的重写正则表达式不匹配,您可能还希望在最后为友好的404页面添加规则。

答案 1 :(得分:1)

感谢Ryan,

改变我的

RewriteRule .?- [s=2]

RewriteRule ./ - [s=2]

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

再次感谢Ryan。