2015-09-05 103 views
2

我找正则表达式,将匹配的模式的.htaccess重写URL启动/重定向

/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] 

任何帮助,将不胜感激。

+1

您使用了标签[tag:.htaccess],但请注意'^ /'在.htaccess文件中永远不会匹配,因为您只剩下当前部分路径。 – meuh

+0

当我在regexr.com上测试它们时,你的答案都是正确的,但是当我在.htaccess中放置任何规则时,没有重定向,并且该网站正在显示404页面? –

+1

在您的服务器日志文件中查找错误消息。 将这个重写放在你的apache配置文件中会更好。 您需要在“RewriteEngine on”开头。只有在 文档根目录的顶部,如果您还添加了“选项+文件信息”,并且仅当您使用“^ catalog”或“^ /?catalog”启动模式时才会在.htaccess中工作,如 其中一个答案。 – meuh

回答

1

尝试

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

正则表达式模式“^ /目录/([A-ZA-Z0-9 - ] +) - P([? 0-9] +)([^。] *)。php $“可匹配 请求uris /catalogue/name-of-the-product-p1-1-1.php/catalog/name- of-the-product-p1.php它首先与“目录”清楚地匹配,然后“([A-Za-z0-9-] +?)”匹配“产品名称”并且节省了t他在重写目标中的重用值为1美元。

+0

你能简单地解释一下为什么这会适合所描述的场景吗? – mjuarez

+0

将旧版网站迁移到magento .htaccess中。我还添加了[R = 301,L] R = 301 - 让谷歌知道它是永久移动/更改和L - 因此它可以停止寻找更多重写匹配。感谢您的帮助。 –

+0

不客气!很高兴我能帮助,欢呼! – starkeen

1

尝试此正则表达式:

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

这个答案出现在低质量的审查队列中,大概是因为你没有解释代码。如果你解释它(在你的答案中),你更有可能得到更多的赞扬 - 而提问者更可能学到一些东西! –