.htaccess目录到文件重定向不使用正斜杠

时间:2011-10-24 07:10:47

标签: apache .htaccess mod-rewrite

我需要.htacess文件中的基本重定向,从目录URL到文件:

RewriteRule ^(.*)/mydirectory/(.*)$ myfile.php?q=$2

它不起作用。问题是我不能让它工作,除非我这样做:

RewriteRule (.*)mydirectory(.*)$ myfile.php?q=$2

在这种情况下,捕获的字符串($ 2)是“mydirectory”(?!),当然规则将适用于包含“mydirectory”作为子字符串的任何URL,即使它不在斜杠之间,这也不好

测试网址为:

http://localhost/base/mydirectory/some-other-string

我的期望是:

http://localhost/base/myfile.php?q=some-other-string"

我得到的第一条规则是什么(规则不适用/不工作),以及“myfile.php?q = base / mydirectory”分别带有第二条规则。

如果我使用RewriteCond,也会发生同样的情况:只要我添加该死的正斜杠,该规则就不再适用了。我甚至逃过了正斜线,虽然没有必要,但无济于事。

我不是mod_rewrite专家,但我并不陌生。 IMO,第一条规则应该有效,但事实并非如此。我可能正在做一些可怕的错误,但我太接近了。

请看一下,这让我疯了。

非常感谢。

1 个答案:

答案 0 :(得分:0)

斜杠在您需要转义它们的正则表达式中具有特殊含义:

RewriteRule ^(.*)\/mydirectory\/(.*)$ myfile.php?q=$2