次のルールはhttpでは動作しますが、httpsでは動作しません。httpsでApacheがクエリ文字列を操作する
RewriteCond %{QUERY_STRING} "page=" [NC]
RewriteRule (.*) /$1? [L]
RewriteRule ^/path/file.html$ https://www.domain.tld/path/file/ [R=301,L]
なぜ、query_stringの部分がhttpsで機能しないのですか?
次のルールはhttpでは動作しますが、httpsでは動作しません。httpsでApacheがクエリ文字列を操作する
RewriteCond %{QUERY_STRING} "page=" [NC]
RewriteRule (.*) /$1? [L]
RewriteRule ^/path/file.html$ https://www.domain.tld/path/file/ [R=301,L]
なぜ、query_stringの部分がhttpsで機能しないのですか?
質問のコメントに基づいて、ページパラメータがあるときはいつでもクエリ文字列を削除したいと思うようです。このタイプの書き換えルールは、リダイレクトがない限りURLを取り除いたり変更したりしません。したがって、書き換えルールにR=301
またはR
を追加しないと、クエリ文字列は削除されません。
RewriteCond %{QUERY_STRING} "page=" [NC]
RewriteRule (.*) /$1? [R=301,L]
それとも、代わりに疑問符のQSDフラグを使用することができる場合があります:
RewriteCond %{QUERY_STRING} "page=" [NC]
RewriteRule (.*) /$1 [R=301,L,QSD]
次のクエリ文字列を削除するには私のサーバー上で働いていた、と私のサーバーは、100%HTTPSでのすべて
それとも、このようなものを使用することができる場合があります(302用)
RewriteCond %{QUERY_STRING} "page=" [NC]
RewriteRule .* /? [R=301,L]
それとも、Rの代わりにR = 301の:
をしかし、リダイレクトを使用しない限り、クエリ文字列は削除されませんでした。
は本当にあなたが必要とするすべてはあなたがHTTPとHTTPSのために別々のバーチャルホストを使用していて、settignsはわずかだった場合を除き、それは、HTTPではなくHTTPSに働くだろう、なぜ私はよく分からないhttp://httpd.apache.org/docs/current/rewrite/flags.htm
RewriteCond %{QUERY_STRING} "page=" [NC]
RewriteRule (.*) /$1 [L,QSD]
QSDです異なる
Rフラグを使用しない限り、書き換えルールは内部であることに注意してください。 Rフラグを使用すると、ブラウザに別のページが表示され、サーバー/クライアントの完全な往復が発生します。それ以外の場合は、リクエストを変更して通常どおり処理を進めます。
私は.htaccessファイルと本当に強いていないよ、と私は舞台裏で何が起こっているかを説明することはできませんが、私の意見からあなたの.htaccessファイルは次のようになります。
RewriteCond %{QUERY_STRING} page= [NC]
RewriteRule (.*) /$1? [L]
RewriteRule ^path/file.html$ https://www.domain.tld/path/file/ [R=301,L]
それは働きます完全
(愛)を試験http://example.com?page=1
https://example.com/?page=1
http://example.com/path/file.html
https://example.com/path/file.html
ためhere
は、これらのは、あなたが持っている唯一のルールはありますか? – akond
いいえ、このように301リダイレクトした後、RewriteRule ^/path/file.html $ https://www.domain.tld/path/file/ [R = 301、L] – Giuseppe
'RewriteRule(。*)/ $ 1? [L] '? – akond