首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果url有后缀且可以有结束,则在.htaccess中设置重定向

如果url有后缀且可以有结束,则在.htaccess中设置重定向
EN

Stack Overflow用户
提问于 2015-05-24 13:09:51
回答 2查看 303关注 0票数 1

在我的客户类别页面的Virtuemart网站上,urls如下:

代码语言:javascript
运行
复制
example.com/vm-search/level1category-cityname/level2category-cityname
or
example.com/vm-search/level1category-cityname/level2category-cityname/level3category-cityname
or
example.com/vm-search/.../-cityname/result,9-10 (digits may be any numbers from 1 to N)

对于.htaccess,我需要一个重定向规则,它将删除除最后一个城市之外的所有城市名称,如果它是url的末尾,则保留result,9-10,即结果必须如下:

代码语言:javascript
运行
复制
example.com/vm-search/level1category/level2category-cityname
or
example.com/vm-search/level1category/level2category/level3category-cityname
or
example.com/vm-search/level1category/level2category-cityname/result,9-10 (digits may be any numbers from 1 to N)
or
example.com/vm-search/level1category/level2category/level3category-cityname/result,9-10 (digits may be any numbers from 1 to N)

请不要把这个问题看作是stackoverflow.com/q/30298289/3208225的重复,因为它还有其他的条件

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-24 17:26:01

您可以在根.htaccess中使用此规则。

代码语言:javascript
运行
复制
RewriteRule ^(vm-search)/(?:([^-]+)-[^/]+/)+?([^/-]+-(?=[a-z])[^/]+(?:/.*)?)$ /$1/$2/$3 [L,NC,R=302]

编辑:如果您想避免多次重定向,那么使用env变量,如下所示:

代码语言:javascript
运行
复制
RewriteRule ^(vm-search)/(?:([^-]+)-[^/]+/)+?([^/-]+-(?=[a-z])[^/]+(?:/.*)?)$ /$1/$2/$3 [NC,L,E=IS_REDIR:1]

RewriteCond %{ENV:REDIRECT_IS_REDIR} =1
RewriteRule . %{REQUEST_URI} [L,R=302]
票数 1
EN

Stack Overflow用户

发布于 2015-05-24 13:42:49

您可以使用以下regex来匹配和替换nothing (空字符串):

代码语言:javascript
运行
复制
-cityname(?=.*cityname)

如下所示(检查语法):

代码语言:javascript
运行
复制
Rewrite -cityname(?=.*cityname) [L,NC,R=302]

如果你想拥有通用关键字..。使用以下方法:

代码语言:javascript
运行
复制
-([^\/\s]+)(?=.*-\1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30423873

复制
相关文章

相似问题

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