Mod重写将下划线转换为影响嵌入图像的破折号

时间:2012-07-15 15:43:08

标签: .htaccess mod-rewrite url-rewriting

我已将以下代码实现到我的.htaccess文件,以将所有下划线转换为破折号。

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

上面的代码有效,但是当我从/ images目录中嵌入图像时遇到了一个问题。

例如,如果其中一个图像文件名包含下划线,则无法正确加载。

如何从上述规则中发出图像和javacript文件名???

还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

为2条规则添加一些条件。您可以选择“检查请求是否为不存在的文件”,或者“检查请求是否以(jpe?g | png | bmp | gif)结尾”。第一个应该涵盖其他东西,比如访问其他资源(javascript,css等)的URL,所以他们也不会有他们的下划线转换,第二个只处理图像。您需要添加以上条件:

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]