1

我正在使用 htaccess 进行 301 永久重定向。我必须将 bima.php 重定向到 ge.php.so 我在 htaccess 中编写了以下代码

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^bima.php?$ $1/ge.php [NC,R=301,L]

这可以正常工作..每当我将 www.test.com/bima.php 放入 url 时,它都会重定向到 www.test.com/ge.php 问题是我还必须为 ge.php 进行 301 重定向。这意味着每当 URL 中的 www.test.com/gen.php 时,它都会重定向到 www.test.com/bima.php。www.test.com/bima.php 需要重定向到 www.test.com/gen.php,反之亦然。有什么想法吗?或者无论如何要这样做?

4

3 回答 3

1

您的重定向规则

RewriteRule ^bima.php?$ $1/ge.php [NC,R=301,L]
RewriteRule ^ge.php?$ $1/bima.php [NC,R=301,L]

正在无限循环中重定向。删除其中之一。

无论您使用哪种类型的逻辑,您尝试的重定向都会在一次循环中结束。所以最好避免这种要求的需要。


这是一个PHP解决方案

文件: ge.php

if($_SESSION['redirected']['from'] != 'bima.php') {
   header("location: bima.php");
   $_SESSION['redirected']['from'] = 'ge.php';
   exit;
}

文件: bima.php

if($_SESSION['redirected']['from'] != 'ge.php') {
   header("location: ge.php");
   $_SESSION['redirected']['from'] = 'ge.php';
   exit;
}
于 2012-05-03T09:17:35.013 回答
0

这是一个解决方案,尽管我同意每个人的基本概念有点古怪:

RewriteEngine On
RewriteCond %{ENV:redirected} !=1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^bima.php?$ $1/ge.php [E=redirected:1,NC,R=301,L]
RewriteRule ^ge.php?$ $1/bima.php [E=redirected:1,NC,R=301,L]

通过使用重定向设置环境变量,第二个重定向不会触发,因为它会看到重定向规则已设置。但是,不确定这是否会在初始成功后搞砸重定向。还有人知道吗?

于 2012-05-03T09:52:30.767 回答
0

bima.php重定向到ge.phpge.phpbima.php。这将导致无限循环。你想达到什么目的?为什么要ge.php重定向到bima.php,反之亦然?

无论哪种方式,你都应该改变你的设计。

于 2012-05-03T09:17:06.227 回答