0

.htaccessファイルに多くのリダイレクトがあります。次に、クエリ文字列値に基づいてURLの書き換えルールを作成する必要があります。

http://www.mydomain.com/subdir/RentalDetails.aspx?RentalId=1072

このURLへのトラフィックはすべて...

http://www.mydomain.com/subdir/RentalDirectory.aspx

私はこのテーマに関するいくつかの良い投稿を調査して見つけ、これを思いついた。

#discontinued properties
RewriteCond %{REQUEST_URI} ^/RentalDetails\.aspx$
RewriteCond %{QUERY_STRING} ^RentalId=1072$
RewriteRule ^(.*)$      /subdir/RentalDirectory.aspx?                [R=301,L]

残念ながら、動作していません。誰かが私がどこで間違っているのかを理解するのを手伝ってくれませんか?よろしくお願いします!

4

1 に答える 1

1

RewriteCondが間違っていると思います:URIは次のように見えるべきではありません

^/RentalDetails\.aspx$

[編集済み-私はついに実際のドキュメントにたどり着き、クエリ文字列が赤いニシンであることがわかりました。ただし、文字列の先頭にも「^」がないため、これが発生している可能性があります]

式の先頭の^atは「文字列はここで開始する必要がある」を$意味し、末尾のatは「文字列はここで終了する」を意味するため、正規表現は制限が厳しく、必要なものと一致しません。

apacheのドキュメントから、REQUEST_URI変数はクエリ文字列を除外しているため、問題はありません。ただし、のURLを/subdir/RentalDetails.aspx単語で始まらなければならない正規表現と一致させようとしています/RentalDetails

次のようなものを試してください

# No ^ at the start, this will match RentalDetails.aspx in any location
/RentalDetails\.aspx$

または

# This will only match in the /subdir/ directory.
^/subdir/RentalDetails\.aspx$
于 2012-12-12T15:46:54.687 に答える