次の書き換えルールがあります。
RewriteEngine on
RewriteRule ^check/([^\/]+)/?$ check.php?id=$1 [L]
check/connected//// に行くと、check.php は接続済みとして表示します。しかし、書き換えルールに関する私の理解から、connected に複数の末尾のスラッシュを追加すると、一致しないはずです。
Check.php:
<?php
echo $_GET['id'];
?>
次の書き換えルールがあります。
RewriteEngine on
RewriteRule ^check/([^\/]+)/?$ check.php?id=$1 [L]
check/connected//// に行くと、check.php は接続済みとして表示します。しかし、書き換えルールに関する私の理解から、connected に複数の末尾のスラッシュを追加すると、一致しないはずです。
Check.php:
<?php
echo $_GET['id'];
?>
で URL 正規表現を照合する際に、複数/
が単一に取り除かれることに/
注意してくださいRewriteRule
。それが、この動作が見られる理由です。
/
複数(たとえば2つ以上)に一致させたい場合は、次を使用する必要があります。
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+check/[^/]+/{2,}
ブラウザとサーバーの間のどこかで、連続するスラッシュが 1 つに凝縮されます。結局のところ、ファイル名を参照する通常の状況では、複数のスラッシュが連続していても意味がありません。
このため、.htaccess
実際に入力した数ではなく、最後に 1 つのスラッシュしか表示されません。これが RewriteRule が機能する理由であり、結果が余分なスラッシュなしで単に「接続」されている理由でもあります。