0

我想将所有内容重定向到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'; ?>

但是 baba 也重定向到 a.php。

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

现在 baba 重定向到 b.php 但其他所有内容都会Not found出错。

我该怎么做?

4

2 回答 2

1

重写引擎循环直到进入引擎的 URI 与输出相同。之所以会这样做babaa.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

于 2012-09-09T19:07:28.120 回答
1

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

在每个块中,您可以根据RewriteCond需要放置任意数量的指令,但每个块都应由RewriteRule指令关闭。因为 RewriteCond 只告诉何时重写,而重写本身是在 RewriteRule 中完成的。

在你的第一个块中,你应该检查它是!baba!b.php

于 2012-09-09T19:11:34.553 回答