Htaccess两种不同的重定向

时间:2008-12-01 17:25:03

标签: 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,,同时保留所有其他网址与现有的/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

5 个答案:

答案 0 :(得分:1)

将规则/ test / in放在规则之前,但是给它一个[L]标志,以便在匹配时停止重写规则处理。

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

这应该有效:

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

答案 3 :(得分:0)

试试这个。

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule /test/.* /test/default.php 
RewriteRule .* /default.php 

DirectoryIndex index.php /default.php

您也不需要(),因为您没有将值设置为变量。

答案 4 :(得分:0)

在您的主文件夹中,使用以下.htaccess

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule .* default.php [L]
DirectoryIndex index.php default.php

./test/文件夹(我假设它是一个物理文件夹)中,复制并粘贴相同的.htaccess文件。

首先,您在默认开始时不需要/。 Apache总是假设它正在寻找.htaccess文件所在的目录。

其次,Apache在查找.htaccess文件时会向后看。因此./test/.htaccess中的任何内容都会覆盖./.htaccess中的内容。