如何将以/ test /开头的URL重定向到单独的脚本?

时间:2008-11-27 18:10:27

标签: apache .htaccess mod-rewrite

我有一个现有的htaccess工作正常:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule (.*) /default.php 
DirectoryIndex index.php /default.php 

我希望修改它,以便以/ test /开头的所有网址都转到/test/default.php。

示例:http://www.x.com/hello.php - > http://www.x.com/default.php 示例:http://www.x.com/test/hello.php - > http://www.x.com/test/default.php

4 个答案:

答案 0 :(得分:3)

基本上,只需将/test/放在表达式前面。此外,这里不需要括号:

RewriteRule ^/test/ /test/default.php

答案 1 :(得分:0)

如果您需要从URL传递信息,您可以捕获它(带括号)并将其发送到default.php(使用$ 1),如下所示:

RewriteRule ^/test/(.*)$ /test/default.php/$1

这样http //..../ test / foo / bar /将导致/test/default.php/foo/bar/。然后,您的脚本可以访问额外信息。

答案 2 :(得分:0)

我会用:

RewriteCond %{REQUEST_URI} ^/([^/]*/)*
RewriteRule !/default\.php$ %0default.php [L]

答案 3 :(得分:0)

RewriteRule ^/test(/.*)?$ /test/default.php [L]

如果需要,在$ _SERVER全局数组中访问原始URI。

根据您的原件判断,您可能想要:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^/test(/.*)?$ /test/default.php [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ /default.php