【问题标题】:.htaccess rewrite URL starting / redirect.htaccess 重写 URL 开始/重定向
【发布时间】:2015-12-01 11:50:21
【问题描述】:

我正在寻找匹配模式的正则表达式

 /catalogue/name-of-the-product-p1-1-1.php 

或者

 /catalogue/name-of-the-product-p1.php

并重定向到:

/name-of-the-product

我试过的代码:

RewriteRule ^/catalogue/([A-Za-z0-9-]+)-p(.+)\.php /$1 [R=301]

任何帮助将不胜感激。

【问题讨论】:

  • 您使用了标签.htaccess,但请注意^/ 在.htaccess 文件中永远不会匹配,因为您只剩下当前的部分路径。
  • 当我在 regexr.com 上测试它们时,你的两个答案都是正确的,但是当我在 .htaccess 中放置任何这些规则时,没有重定向并且网站显示的是 404 页面?
  • 在您的服务器日志文件中查找错误消息。最好将此重写放在您的 apache 配置文件中。你需要在它前面加上RewriteEngine on。如果您还添加Options +FileInfo,并且仅当您使用“^catalogue”或“^/?catalogue”作为其中一个答案开始模式时,它将仅在文档根目录顶部的 .htaccess 中工作.

标签: regex apache .htaccess mod-rewrite url-redirection


【解决方案1】:

试试这个正则表达式:

^/catalogue/([A-Za-z0-9-]+)-p[0-9]+(-[0-9]+)*\.php

【讨论】:

  • 这个答案出现在低质量审查队列中,大概是因为您没有解释代码。如果您确实解释了它(在您的回答中),您更有可能获得更多的支持——提问者更有可能学到一些东西!
【解决方案2】:

试试

RewriteRule ^/?catalogue/([A-Za-z0-9-]+?)-p([0-9]+)([^.]*)\.php$ /$1 [R]

正则表达式模式“^/?catalogue/([A-Za-z0-9-]+?)-p([0-9]+)([^.]*).php$”可以匹配 两者都请求 uris /catalogue/name-of-the-product-p1-1-1.php/catalogue/name-of-the-product-p1.php它首先在字面上匹配“catalogue”,然后“([A-Za-z0-9-]+?)”匹配“name-of-the-product”并将值保存为 $1 以便在 Rewrite 目标中重复使用。

【讨论】:

  • 您能简要解释一下为什么这适合所描述的场景吗?
  • 将旧站点迁移到 magento .htaccess 中。我还添加了 [R=301,L] R=301——让 google 知道它是永久移动/更改和 L——因此它可以停止寻找更多的重写匹配。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2013-12-21
  • 2015-03-04
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
相关资源
最近更新 更多