mod_rewrite将多个目录转换为php文件

时间:2009-03-05 16:38:39

标签: php .htaccess mod-rewrite url-rewriting

RewriteEngine on
RewriteRule ^/(dir1|dir2|dir3)/(.*)$ /targetfile.php [R,L]

http://www.somesite.com/dir1 - > http://www.somesite.com/targetfile.php
http://www.somesite.com/dir2 - > http://www.somesite.com/targetfile.php
http://www.somesite.com/dir3 - > http://www.somesite.com/targetfile.php

从我在网上看到的情况来看,这应该有效。不幸的是,它不会。有什么见解吗?

3 个答案:

答案 0 :(得分:1)

如果要在.htaccess文件中使用它,请从模式中删除前导斜杠。要仅匹配完整路径段,您必须稍微改变表达式。

所以试试这个:

RewriteEngine on
RewriteRule ^(dir1|dir2|dir3)(/|$) targetfile.php [R,L]

答案 1 :(得分:1)

我不相信正斜杠是必要的,除非你想限制它在“dir1”之后要求尾部斜杠。

尝试:     RewriteRule ^(dir1 | dir2 | dir3)$ targetfile.php [QSA,L]

答案 2 :(得分:0)

我认为问题是正则表达式要求在目录名后面加斜杠(例如/ dir1 /),但在示例中省略了最后一个斜杠(http://www.somesite.com/dir1没有斜杠)。

我认为你可以尝试使用

RewriteRule ^/(dir[1-3]) /targetfile.php [R,L]