Regex .htaccess重写URL启动/重定向

Regex .htaccess重写URL启动/重定向,regex,apache,.htaccess,mod-rewrite,url-redirection,Regex,Apache,.htaccess,Mod Rewrite,Url Redirection,我正在寻找正则表达式,它将匹配一个模式 /catalogue/name-of-the-product-p1-1-1.php 或 并重定向到: /name-of-the-product 我尝试的代码: RewriteRule ^/catalogue/([A-Za-z0-9-]+)-p(.+)\.php /$1 [R=301] 任何帮助都将不胜感激 试试这个正则表达式: ^/catalogue/([A-Za-z0-9-]+)-p[0-9]+(-[0-9]+)*\.php 试一试 正则表达

我正在寻找正则表达式,它将匹配一个模式

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

并重定向到:

/name-of-the-product
我尝试的代码:

RewriteRule ^/catalogue/([A-Za-z0-9-]+)-p(.+)\.php /$1 [R=301]
任何帮助都将不胜感激

试试这个正则表达式:

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

正则表达式模式“^/?catalog/([A-Za-z0-9-]+?)-p([0-9]+)([^.]*).php$”可以匹配
两者都请求URI/catalog/name-of-product-p1-1-1.php/catalog/name-of-product-p1.php它首先以文字形式匹配“catalog”,然后“([A-Za-z0-9-]+?)”匹配“产品名称”并将值另存为$1,以便在重写目标中重用。

您使用了标记,但请注意,
^/
在.htaccess文件中永远不会匹配,因为您只剩下当前的部分路径。当我在regexr.com上测试它们时,您的两个答案都是正确的,但是当我将这些规则中的任何一条放入.htaccess时,没有重定向,而站点显示的是404页?请查看服务器日志文件中的错误消息。最好将此重写放在apache配置文件中。您需要在它前面加上
RewriteEngine on
。如果您还添加了
Options+FileInfo
,并且仅当您以“^catalog”或“^/?catalog”开始模式时,它将仅在文档根目录顶部的.htaccess中工作如其中一个答案所示。您能简要解释一下为什么这符合所描述的场景吗?在magento.htaccess中应用了这一点,因为旧站点已迁移到其中。我还添加了[R=301,L]R=301–让谷歌知道这是永久的移动/更改和L–这样它就可以停止寻找更多的重写匹配。谢谢你的帮助。这个答案出现在低质量审查队列中,可能是因为你没有解释代码。如果你解释了(在你的答案中),你就更有可能获得更多的选票,提问者也更有可能学到一些东西!
^/catalogue/([A-Za-z0-9-]+)-p[0-9]+(-[0-9]+)*\.php
RewriteRule ^/?catalogue/([A-Za-z0-9-]+?)-p([0-9]+)([^.]*)\.php$ /$1 [R]