要将规则限制为某些请求,您需要使用RewriteCond
. 您可以在此处找到有关这些文档的文档。
为了让它为你工作,www.domain.com/directory/
你可以将它添加到 RewriteRule 本身。请注意,您使用的是永久重定向,因此在您从浏览器中为您的站点清除缓存之前,您当前所做的任何更改都将不起作用。
RewriteRule ^directory/([^_]*)_([^_]*_.*) /directory/$1-$2 [N]
RewriteRule ^directory/([^_]*)_([^_]*)$ /directory/$1-$2 [L,R]
要排除 css 和 js 文件,您可以使用类似这样的东西。这将排除以或( )!
结尾的 ( ) 文件。.css
.js
\.(css|js)
RewriteCond %{REQUEST_URI} !\.(css|js)$
RewriteRule ^directory/([^_]*)_([^_]*_.*) /directory/$1-$2 [N]
RewriteRule ^directory/([^_]*)_([^_]*)$ /directory/$1-$2 [L,R]
我无法测试这些规则,我鼓励您设置一个简单的本地主机服务器来测试,然后再在您的实时站点上进行测试。如果您在站点上测试重定向,请始终使用临时重定向 ( [R]
) 而不是永久重定向 ( [R=301]
)。永久重定向由浏览器缓存并减少服务器上后续请求的负载,但如果您正在测试,它会记住以前的尝试。仅在所有规则按您希望的方式工作后,才将临时重定向更改为永久重定向。