.htaccess - htaccess 将下划线重写为特定目录的破折号

标签 .htaccess mod-rewrite seo

我可以使用以下内容成功地将下划线重写为破折号——但我需要代码仅适用于特定目录,但我无法使该部分正常工作。

作品:

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]

最佳答案

当您从 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这将帮助您验证您的配置,例如

Online htaccess tester

虽然该工具有一些限制,即目前没有实现某些功能,如 %{REQUEST_FILENAME}%{ENV:...} 但对于简单的规则它应该没问题。

希望对您有所帮助。

关于.htaccess - htaccess 将下划线重写为特定目录的破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14783807/

相关文章:

apache - 使用参数重定向 URL

.htaccess - htaccess - 页面没有正确重定向

.htaccess - htaccess mod_rewrite 排除图像/css

php - 使用 .htaccess 创建 SEO 网址

apache - 复杂的 .htaccess 重写

php - 如果通过身份验证,则允许下载文件

php - 如何阻止用户使用 PHP 或 mod rewrite 查看我网站上没有索引页面但其他页面的文件夹?

ajax - Apache "_escaped_fragment_"重定向

apache - http 到 www 同时保留子文件夹?

html - 在 HTML5 中可以在 H2 之后使用 H1 吗?