2

htaccess を使用して末尾を削除するにはどうすればよいですか? http://domain.com/directory/folder/から ?

したがって、次のように表示されます。

http://domain.com/directory/folder/

4

1 に答える 1

3

残念ながら、(クエリ文字列は明示的に削除されている) の 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ビットなしで終了できるため) またはスペースのいずれかに一致します。

于 2012-11-05T05:06:05.767 に答える