現在、URLから.phpを削除する次のコードがあります
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
しかし、ファイル名の文字 _ を URL の / に置き換えたいとも考えています。これを試してみましたが、奇妙なエラーが発生するだけです。誰でもこれを行う方法を知っていますか?
現在、URLから.phpを削除する次のコードがあります
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
しかし、ファイル名の文字 _ を URL の / に置き換えたいとも考えています。これを試してみましたが、奇妙なエラーが発生するだけです。誰でもこれを行う方法を知っていますか?
要求されたファイルにはアンダースコアが 0 個または 1 個しか含まれていない可能性があると述べたので、これは機能するはずです。
RewriteCond %{REQUEST_URI} \.php$ [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME}\.php !-f
RewriteRule .* - [S=2]
RewriteRule ^(.*)$ $1.php
RewriteRule ^([^_]+)_([^_]+)$ $1/$2 [L]
前の 3 つの条件がすべて真である場合にのみ両方のルール (最初のルールだけでなく) を適用するには、条件を否定し、後でスキップ ルールを適用します。[S=2]
つまり、「次の 2 つのルールをスキップする」ことを意味します。
したがって、新しい 3 つの条件がすべて false (したがって、それらの否定が true) の場合、最初の書き換え.php
がすべての要求に追加されます。2 回目の書き換えは、すべてのアンダースコアをスラッシュに変更し、書き換えを停止します。