htaccess ファイルでは、書き換え規則は順序に従う必要がありますか? 長いのが先で短いのが最後とか、そういうこと?または、それらをどの順序で配置してもかまいません。以下のようないくつかのルール (約 20) しかありませんが、それはすべて大混乱です。
RewriteRule ^/?(backend)/(users)/(new|blocked)/([a-z0-9]+)/?$ /blah/users/index.php?type=$2&case=$3&offset=$4 [NC,L]
htaccess ファイルでは、書き換え規則は順序に従う必要がありますか? 長いのが先で短いのが最後とか、そういうこと?または、それらをどの順序で配置してもかまいません。以下のようないくつかのルール (約 20) しかありませんが、それはすべて大混乱です。
RewriteRule ^/?(backend)/(users)/(new|blocked)/([a-z0-9]+)/?$ /blah/users/index.php?type=$2&case=$3&offset=$4 [NC,L]
では、書き換え規則の順序は非常に重要です.htaccess
。最も具体的なものを一番上に置き、最も一般的な (すべてをキャッチする) 型の規則を最後に置く必要があります。
例で示しましょう。.php
すべての有効なファイルの拡張子を非表示にし.php
たいが、残りのファイルを index.php に転送したい場合、最初に PHP の非表示ルールを次のように記述する必要があります。
# first try loading PHP file if available
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L,NC]
# not available then send it to /index.php?file=<file>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php?file=%{REQUEST_URI}.php [L,QSA]