2 RewriteRule in htaccess



我想将所有内容重定向到a.php。以及CCD_ 2到CCD_。

我做了以下事情:

.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也重定向到了.php。

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

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

我该怎么做?

重写引擎循环,直到进入引擎的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

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

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

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

最新更新