【问题标题】:Set redirect in .htaccess for all the urls with a suffix在 .htaccess 中为所有带后缀的 url 设置重定向
【发布时间】:2015-05-18 08:22:24
【问题描述】:

我有这样的网址:

example.com/vm-search/parentcategory-cityname/childcategory-cityname

它们被搜索引擎索引。我决定从所有父类别中删除城市名称后缀,现在我需要将所有旧网址的重定向设置为新网址,然后搜索引擎会将它们编入索引。所有网址的城市名称都相同,新网址如下:

example.com/vm-search/parentcategory/childcategory-cityname

我还没有尝试使用 htaccess 做任何事情。我应该在文件中添加什么规则?

【问题讨论】:

  • 什么是新的 URL 并显示你的尝试

标签: regex apache .htaccess mod-rewrite redirect


【解决方案1】:

您可以在 DOCUMENT_ROOT/.htaccess 文件中使用此规则:

RewriteEngine On

RewriteRule ^(vm-search/.+?)/results,\d+-\d+$ /$1 [L,NC]

RewriteRule ^(vm-search/(?:[^/-]+/)*[^/-]+)-[^/]+/(.*)$ /$1/$2 [L,NC,R=302]

【讨论】:

  • 让我看看能否为更深层次的 URL 提供一个正则表达式。给我几分钟的试验时间。
  • 您可以将上述规则替换为:RewriteRule ^(vm-search/(?:[^/-]+/)*[^/-]+)-[^/]+/(.*)$ /$1/$2 [L,NC,R=302],它将从除最后一个之外的所有位置删除所有-cityname/
  • 抱歉又给您添麻烦了。正在为 Virtuemart 类别生成 url,刚才我注意到它们还有一个问题。如果用户转到同一类别的下一页,则会将以下结尾添加到 url:/results,9-10 你能重写你的规则吗,如果 url 有/vm-search/...-city/results,9-10,规则会删除除最后一个和剩余的所有城市/results,9-10(数字可以是从 0 到 N 的任何数字)。提前致谢
  • 是的,数字可以是从 0 到 N 的任意数字(例如 9-10、40-80、800-900 等),results, 始终是静态文本
  • 如果我同时使用这两个规则并尝试转到下一页(网址中有results)我无法转到此页面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 2017-10-30
  • 2013-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多