首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只在一个参数上用连字符替换下划线,然后在htaccess中替换301。

只在一个参数上用连字符替换下划线,然后在htaccess中替换301。
EN

Stack Overflow用户
提问于 2015-05-29 03:15:47
回答 1查看 79关注 0票数 1

我试图用连字符代替下划线,只对一个特定的参数,然后执行301重定向。我已经知道了如何替换它们,并将其应用于整个URL,但无法解决如何只为一个参数替换它们。现在我有一个:

代码语言:javascript
复制
RewriteCond %{QUERY_STRING} ^state=([a-zA-Z_]+)&city=([a-zA-Z_]+)$
RewriteRule city.html /find/this/in/%2/%1/? [L,R=301]

此301重定向如下: mysite.com/city.html?state=va&city=dunn_loring

至此: mysite.com/find/this/in/dunn_loring/va/

我希望它能将301重定向到:mysite.com/find/this/in/dunn/va/

本质上,我只想用连字符替换上面htaccess示例中'%1‘部分的下划线。提前谢谢你的指点

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-29 04:47:15

下面的解决方案对下划线上的数字没有限制。第一个RewriteRule替换看到的第一个下划线,N标志导致处理重新开始,所以规则将继续应用,直到所有下划线都被替换。当不再留下下划线时,将发出重定向。

代码语言:javascript
复制
RewriteCond %{QUERY_STRING} ^state=([a-zA-Z_]+)&city=([a-zA-Z-]+)_([a-zA-Z_-]+)$
RewriteRule city.html /city.html?state=%1&city=%2-%3 [N]

RewriteCond %{QUERY_STRING} ^state=([a-zA-Z_]+)&city=([a-zA-Z-]+)$
RewriteRule city.html /find/this/in/%2/%1/? [L,R=301]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30520519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档