1

私は301パーマネントリダイレクトにhtaccessを使用しています。bima.phpをge.php.phpにリダイレクトする必要があるので、htaccessで以下のコードを記述しました

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

これは正しく機能します。URLにwww.test.com/bima.phpを入れると、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]

無限ループでリダイレクトしています。それらの 1 つを削除します。

使用するロジックの種類に関係なく、試みているリダイレクトは一度にループで終了します。したがって、そのような要件の必要性は避けたほうがよいでしょう。


ここに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

bima.phpge.phpとにリダイレクトしge.phpますbima.php。これにより、無限ループが発生します。何を達成しようとしていますか?なぜge.phpリダイレクトしたいbima.phpのですか?

いずれかの方法でデザインを変更する必要があります。

于 2012-05-03T09:17:06.227 に答える
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]

リダイレクトで環境変数を設定すると、リダイレクトされたルールが設定されていることがわかるため、2 番目のリダイレクトはトリガーされません。ただし、これが最初の成功後にリダイレクトを台無しにするかどうかはわかりません. 他の誰かが知っていますか?

于 2012-05-03T09:52:30.767 に答える