0

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

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

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

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

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

还有另一种方法吗?

4

1 回答 1

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]
于 2012-07-15T16:09:13.057 回答