htaccess を使用して末尾を削除するにはどうすればよいですか? http://domain.com/directory/folder/から ?
したがって、次のように表示されます。
htaccess を使用して末尾を削除するにはどうすればよいですか? http://domain.com/directory/folder/から ?
したがって、次のように表示されます。
残念ながら、(クエリ文字列は明示的に削除されている) の URI 一致を介して漂遊した末尾のスラッシュを検出する方法はありません。変数RewriteRule
に対してチェックすることもできません。、変数は空白になります。あなたがする必要があるのは、変数を介して、実際のリクエストを使用して末尾のスラッシュと照合することです:%{QUERY_STRING}
%{THE_REQUEST}
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /[^\ \?]*\?($|\ )
RewriteRule ^(.*)$ /$1? [L,R=301]
それは迷子を取り除きますか?は URL の後ろにあります。上記の正規表現はリクエストに対して一致し、次のようになります。
GET /directory/folder/? HTTP/1.1
そのため、正規表現は、GET
部分 (HEAD
またはの場合もありますPOST
。他の方法も存在しますが、ブラウザーの URL アドレス バーに表示される内容には影響しません)、次に要求された URI ( /[^\ \?]*
)、次に stray ?の一致を試みます。の場合、($|\ )
はリクエストの終わり (リクエストはHTTP/1.1ビットなしで終了できるため) またはスペースのいずれかに一致します。