1

私が持っている:

RewriteRule ^page/([^/\.]+)/?$ index.php?page=$1 [L]

を指しpage/([^/\.]+)/?ますindex.php?page=$1

私が行くときpage/([^/\.]+)/、私はindex.phpを見たくありません(これは上記から達成されます)

逆に、index.php にアクセスしたときに、 への 301 リダイレクトが表示されるようにしますpage/([^/\.]+)/

無限ループを引き起こさずにこれを行うにはどうすればよいですか...または正規タグのみに依存しますか?

アップデート:

私はそれを一方向(新から古い)に起こさせましたが、他の方向(古いから新しい)には起こりませんでした

RewriteRule ^([^/\.]+)-yum/?$ yum/?x=$1 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)-yum/?$ yum/?x=$2&y=$1 [L]
4

2 に答える 2

0

実際のリクエストが index.php ファイルに対するものである場合にのみ%{THE_REQUEST}書き換えられるように、変数に対してチェックを行う必要があります。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?page=([^&]+)([^\ ]*)
RewriteRule ^/?index\.php$ /page/%1/?%2 [L,R=301]

したがって、ブラウザがリクエストした場合http://yourdomain.com/index.php?page=qwe&someother=var

次の場所にリダイレクトされます。http://yourdomain.com/page/qwe/?someother=var

于 2012-07-26T17:34:23.903 に答える
0

ここで完全なソリューション:

RewriteCond %{QUERY_STRING} Variable=([A-Za-z]+)$
RewriteRule OldURL/$ /NewURL/%1? [L,R=301]
RewriteRule ^NewUrl/([^/\.]+)$ MappedNewLocationFolder/?Variable=$1 [L]

1 行目:チェック (名前と数) パラメータが期待どおりであること

2 行目:パラメータのベース パスを確認します。これは、OldURL が正しく、301 から NewUrl へ

3 行目: NewUrl をファイルが置かれている実際の場所にマップします (ブラウザーには表示されません)。

(2 行目の最後の疑問符は、変数が NewUrl に追加されるのを防ぎます)

于 2012-08-01T15:55:07.120 に答える