4

1 つの完全な URL をリダイレクトしようとしている

http://www.domain-name.com/download/?page=download

このURLへ

http://www.domain-name.com/download/show

これが機能するために、このコードを追加しました

rewriterule http://www.domain.com/download/?page=download(.*)$ http://www.domain.com/download/show$1 [r=301,nc]

しかし、これは機能しておらず、代わりに、私が要求している URL に「禁止」と表示されています。

誰でもこれに対する解決策を教えてください。

4

4 に答える 4

16

htaccess ファイルを使用して、ある URL を別の URL にリダイレクトします。

Redirect 301 /en/php/project.html http://www.example.org/newpage.html
于 2015-02-02T12:56:06.620 に答える
5

RewriteRule には、クエリ文字列と http-host が含まれていません。それに加えて、最初の引数は正規表現パターンです。http ホストがないと、 または のいずれdownload/page=download(etc)かに一致しますdownloadpage=download(etc)

2 つのルールが必要です。醜い URL を素敵な URL にリダイレクトするもの。1 つのルールで、適切な URL を実際に機能する URL に書き換える必要があります。

#Rewrite ugly url to nice url
RewriteCond %{QUERY_STRING} ^page=download&?(.*)$
RewriteRule ^download/?$ download/show?%1 [R,L]

#Now get the nice url to work:
RewriteRule ^download/show/?$ download/?page=download [QSA,END]

2 番目のルールは QSA フラグを使用します。つまり、元のクエリ文字列を rewriterule のクエリ文字列に追加します。END フラグは、L フラグが .htaccess コンテキストでそれを行わないため、すべての書き換えを停止します。END は Apache 2.3.9 以降でのみ使用でき、それ以前のバージョンで使用すると内部サーバー エラーが発生します。おそらく、実際のファイルを指すように 2 番目のルールを変更する必要があることに注意してください。

ドキュメントはこちらにあります

編集: 永続的なリダイレクトで htaccess ルールをテストしないでください。間違えた場合、ブラウザはこの間違いを覚えています! すべてが期待どおりに機能している場合にのみ、一時的なリダイレクトを永続的なリダイレクトに変換してください。

于 2013-08-03T07:54:09.610 に答える