2


2

PHPのURLにパラメータがある場合、RewriteRuleでURLをリダイレクトしますか?
htaccessで書き換えルールを使用して、ユーザーを古いリンクから一時的な新しいリンクに移動しようとしています(永続的な新しいサイトではないため、301リダイレクトは必要ありません)

以下は、すべてのhtmlページとパラメーターなしのphpページで機能しますが、最後の例であるパラメーター付きのphpページは処理しません。 新しいドメインではディレクトリ構造が異なりますが、URLのパラメーターはまったく同じであることに注意してください。 書き換えを可能にするために正規表現でできることはありますか? 私は自分の正規表現を書く経験があまりないので、どこから始めればいいのかわかりません。 ありがとうございます。

私の.htaccessファイル:

AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php
Options -MultiViews
Options +FollowSymlinks
RewriteEngine on
RewriteRule invest/index.html http://example.org/new_file_structure/invest/index.html
RewriteRule index-old.html http://example.org/index.php
RewriteRule invest/i2/ap/row_I2_i_ap1.php http://example.org/new_file_structure/i2/ap/row_I2_i_ap1.php

##The following doesn't work:
RewriteRule subpages/view.php?d=i1_014 http://example.org/2010/view.php?d=i1_014

ありがとう、ジェン

2 Answer


5


クエリ文字列を検出するには、 `RewriteCond`を使用する必要があります。

RewriteCond %{QUERY_STRING} d=(.+)

そして、 `%n`の形式でRewriteCond後方参照を使用する必要があります。

RewriteRule subpages/view.php$ http://example.org/2010/view.php?d=%1


1


GETパラメータはすべてに格納されます

%{QUERY_STRING}

それをリダイレクトURLに追加できるはずです。

RewriteRule subpages/view.php?d=i1_014 http://example.org/2010/view.php?d=i1_014&%{QUERY_STRING}

しかし、301が必要ない場合、完全なURLを指定するのはなぜですか? そうすると、301を強制することになります。 なぜ `/2010/view.php …​.`を使用しないのですか?