如何通过htaccess替换URL特定位置的指定单词
解决URL特定位置单词替换的重定向问题
你的问题出在当前规则会匹配URL中所有位置的single,导致连文件名里的single也被替换了。要只替换路径中/blog/后面的那个single,可以精准定位匹配的位置:
精准匹配的RewriteRule规则
使用更具体的正则表达式,只匹配/blog/single/这个片段:
RewriteRule ^blog/single/(.*)$ blog/post/$1 [R=301,L]
这个规则会把https://www.example.com/blog/single/how-to-start-single-app准确重定向到https://www.example.com/blog/post/how-to-start-single-app,不会影响后面路径里的single。
为什么这个规则有效?
^blog/single/(.*)$:以blog/single/开头的URL,把后面的所有内容捕获到$1中blog/post/$1:将匹配到的部分替换成blog/post/加上原来的后续内容[R=301,L]:设置301永久重定向,L表示这是最后一条执行的规则,避免后续规则干扰
如果需要限制特定域名,可搭配RewriteCond使用:
RewriteCond %{HTTP_HOST} ^www\.example\.com$ RewriteRule ^blog/single/(.*)$ https://www.example.com/blog/post/$1 [R=301,L]
内容的提问来源于stack exchange,提问作者Sushovan Das
相关产品推荐
相关产品推荐

