8

Apache リライトを使用しているときに URL の変更を非表示にするにはどうすればよいですか? この問題について何時間も検索しましたが、答えを見つけるためにここに来ることにしました。したがって、どんな助け/手がかりも大歓迎です!

現在、私は使用しています:

RewriteRule ^/Page/(.*)$ http://domain.com/page.cfm?pagevar=$1 [NC,L]

それに関する問題は、ナビゲートすると機能するhttp://domain.com/Page/abc123 ことです。しかし、ブラウザのURLをに変更しhttp://domain.com/page.cfm?pagevar=abc123

同じアクションを実行したいのですが、http://domain.com/Page/abc123を URL として表示します。

どうか、これに関する洞察をいただければ幸いです。再度、感謝します。

4

2 に答える 2

7

最初のルールは、醜い URL をきれいな URL 形式にリダイレクトします。

2 番目のルールは、ユーザーに醜い URL が表示されないように内部的にリダイレクトします。

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

# Redirect /page.cfm?pagevar=abc123 to /Page/abc123
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+page\.cfm\?pagevar=([^&\s]+) [NC]
RewriteRule ^ /Page/%1? [R=301,L]

# Internally forward /Page/abc123 to /page.cfm?pagevar=abc123
RewriteRule ^Page/(.*)/?$ /page.cfm?pagevar=$1 [QSA,NC,L]

上記のルールはファイルで使用されるものであり、ファイルとともにドメイン フォルダーのルートにあること.htaccessを前提としています。page.cfm.htaccess

あなたの例が提案するように。

于 2013-09-06T16:28:56.987 に答える
0

http://domain.comルールのターゲットの部分を取り除く必要があります。それがある場合、内部的に書き換えるのではなく、ブラウザを暗黙的にリダイレクトします。

RewriteRule ^/Page/(.*)$ /page.cfm?pagevar=$1 [NC,L]
于 2013-09-06T16:26:43.193 に答える