2

私は自分のウェブサイトのリダイレクトの束を基本的にサーバー上の別のフォルダーに移動したものと一致させようとしています。http://www.site.com/index.php?page=anypageをhttp://www.site.com/newfolder/index.php?page=anypageに移動させる必要があります。問題はhttp://www.site.com/index.phpであり、http: //www.site.com/index.php?page=homeはそのままにしておく必要があります。どうすればこれを達成できますか?

.htaccessファイルで次のことを試していましたが、間違えたのではないかと思います。私もこれをテストする方法を本当に知りません。

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^/index.php?page=(.*)$ http://www.site.com/newfolder/index.php?page=$1 [R=302,NC]
RewriteRule ^/index.php?page=home http://www.site.com/index.php?page=home [R=302,NC,L]

これは一時的なものだと思ったので、逆にする方法を知っておく必要があります。来週、リンクはルートサーバーに再度リダイレクトする必要があります。また、通常のリダイレクトを再確立するにはどうすればよいですか?

4

1 に答える 1

3

私があなたのシナリオに正しく従っていたなら、あなたはこのようなものが欲しいでしょう:

RewriteEngine On

RewriteCond %{QUERY_STRING} !=""
RewriteCond %{QUERY_STRING} !page=home
RewriteRule ^index.php /newfolder/index.php [R,L]

テストに関しては、ローカルのテストサーバーでルールを試してみるのが好きです。サーバーを完全に制御できる場合(ローカルの場合のように)、mod_rewrite何が起こっているかをログに記録するのに役立つディレクティブがいくつかあり、デバッグに役立ちます。モジュールのドキュメントには、これに関する詳細情報があります。

編集:RewriteRule元に戻したい場合は、上記を次のように変更します。

RewriteRule ^newfolder/index\.php /index.php [R,L]
于 2010-08-10T03:01:51.917 に答える