2 htaccess中的RewriteRule

时间:2012-09-09 18:44:03

标签: .htaccess

我想将所有内容重定向到a.php。并babab.php

我做了以下事情:

.htaccess:

RewriteEngine on

RewriteCond %{REQUEST_URI} !a.php
RewriteCond %{REQUEST_URI} !baba
RewriteRule .* a.php

RewriteRule baba b.php

a.php:<?php echo 'a.php'; ?>
b.php:<?php echo 'b.php'; ?>

但巴巴也重定向到a.php。

所以我将htaccess中的第4行修改为:RewriteCond %{REQUEST_URI} ^!baba

现在baba重定向到b.php,但其他一切都出现Not found错误。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

重写引擎循环,直到进入引擎的URI出现相同。 baba前往a.php的原因是它首先被重写为b.php,然后当引擎循环时,b.php被重写为a.php。您可以通过向第一个规则添加其他条件来解决此问题:

RewriteEngine on

RewriteCond %{REQUEST_URI} !a.php
RewriteCond %{REQUEST_URI} !b.php
RewriteCond %{REQUEST_URI} !baba
RewriteRule .* a.php

RewriteRule baba b.php

因此b.php不会被重写为a.php

答案 1 :(得分:1)

您可以分开处理不同类型链接的规则。

在每个块中,您可以根据需要添加尽可能多的RewriteCond指令,但每个块应该由RewriteRule指令关闭。因为RewriteCond只告诉重写时间,但重写本身是在RewriteRule中完成的。

在第一个区块中,您应检查它是!baba!b.php