【发布时间】:2015-04-20 06:56:03
【问题描述】:
我想在永久 301 重定向之前替换 URL 中的所有连字符。例如:http://www.example.com/article_category/article_name 对此:http://www.example.com/article-category/article-name
我的 .htaccess 文件如下所示:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ![_]
RewriteRule .? - [S=2]
RewriteRule ^/?([^_]+)_(.*)$ $1-$2 [N,L]
RewriteRule ^(.*)$ /$1 [R=301,L]
[S] 标志用于防止每次重定向发生时重复最后一条规则,从而导致循环。但似乎最后一条规则没有触发,因为请求的 URL 保持不变,而我从想要的页面获取内容。我尝试从第三行删除 L 标志,但它会导致循环:(
【问题讨论】:
标签: .htaccess mod-rewrite http-status-code-301