的.htaccess重写URL启动/重定向
问题描述:
我找正则表达式,将匹配的模式的.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]
任何帮助,将不胜感激。
答
尝试
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美元。
答
尝试此正则表达式:
^/catalogue/([A-Za-z0-9-]+)-p[0-9]+(-[0-9]+)*\.php
+0
这个答案出现在低质量的审查队列中,大概是因为你没有解释代码。如果你解释它(在你的答案中),你更有可能得到更多的赞扬 - 而提问者更可能学到一些东西! –
您使用了标签[tag:.htaccess],但请注意'^ /'在.htaccess文件中永远不会匹配,因为您只剩下当前部分路径。 – meuh
当我在regexr.com上测试它们时,你的答案都是正确的,但是当我在.htaccess中放置任何规则时,没有重定向,并且该网站正在显示404页面? –
在您的服务器日志文件中查找错误消息。 将这个重写放在你的apache配置文件中会更好。 您需要在“RewriteEngine on”开头。只有在 文档根目录的顶部,如果您还添加了“选项+文件信息”,并且仅当您使用“^ catalog”或“^ /?catalog”启动模式时才会在.htaccess中工作,如 其中一个答案。 – meuh