0

すべてのアンダースコアをダッシュ​​に変換するために、次のコードを .htaccess ファイルに実装しました。

RewriteRule ^([^_]*)_([^_]*_.*) $1-$2 [L]
RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=301]

上記のコードは機能しますが、/images ディレクトリから画像を埋め込むときに問題が発生します。

たとえば、画像ファイル名の 1 つにアンダースコアが含まれていると、正しく読み込まれません。

上記のルールから画像と javacript ファイル名を出力するにはどうすればよいですか?

それを行う別の方法はありますか?

4

1 に答える 1

0

2 つのルールにいくつかの条件を追加します。「存在しないファイルに対するリクエストかどうかを確認する」か、「リクエストが (jpe?g|png|bmp|gif) で終了するかどうかを確認する」のいずれかを使用できます。1 つ目は、他のリソース (javascript、css など) にアクセスする URL などの他のものをカバーする必要があるため、アンダースコアも変換されません。2 つ目は画像のみを扱います。両方のルールの上に条件を追加する必要があります。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^_]*)_([^_]*_.*) $1-$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=301]

または

RewriteCond %{REQUEST_URI} !\.(jpe?g|png|bmp|gif)$ [NC]
RewriteRule ^([^_]*)_([^_]*_.*) $1-$2 [L]

RewriteCond %{REQUEST_URI} !\.(jpe?g|png|bmp|gif)$ [NC]
RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=301]
于 2012-07-15T16:09:13.057 に答える