我可以使用以下内容成功地将下划线重写为短划线 - 但是我需要代码仅适用于某个目录,而且我无法使该部分工作。
WORKS:
RewriteRule ^([^_]*)_([^_]*)_(.*)$ /$1-$2-$3 [R=301,L]
RewriteRule ^([^_]*)_(.*)$ /$1-$2 [R=301,L]
不工作:
RewriteRule ^/media/entry/([^_]*)_([^_]*)_(.*)$ /media/entry/$1-$2-$3 [E=unscors:Yes]
RewriteRule ^/media/entry/([^_]*)_(.*)$ /media/entry/$1-$2 [E=unscors:Yes]
RewriteCond %{ENV:unscors} ^Yes$
RewriteRule ^/media/entry/(.*)$ http://domain.com/media/entry/$1 [R=301,L]
答案 0 :(得分:1)
当您从/
模式中删除所有前导RewriteRule
时,一切都应该正常工作(如前两个有效的示例)。
以下代码:
RewriteRule ^media/entry/([^_]*)_([^_]*)_(.*)$ /media/entry/$1-$2-$3 [E=unscors:Yes]
RewriteRule ^media/entry/([^_]*)_(.*)$ /media/entry/$1-$2 [E=unscors:Yes]
RewriteCond %{ENV:unscors} ^Yes$
RewriteRule ^media/entry/(.*)$ http://domain.com/media/entry/$1 [R=301,L]
还有一个很好的online htaccess tester可以帮助您验证配置,例如
该工具有一些限制,但目前尚未实现某些功能,如%{REQUEST_FILENAME}
或%{ENV:...}
,但对于简单的规则,它应该没问题。
我希望这会有所帮助。