我需要帮助为.httaccess文件夹中的以下链接结构创建重写规则/ 301重定向。
来源网址:www.example.com/sub_directory/product_name_1.html
目标网址:www.example.com/prodcut-name-1.html
然后重定向的要求如下:
不幸的是我的正则表达并不是很好。我尝试过搜索,但其他帖子中的解决方案存在类似问题但不适用于我(例如here)
对此解决方案的任何帮助都将非常感激。如果你能解释它为什么/如何,请。我希望能够更好地理解这一点。
答案 0 :(得分:1)
像这样的东西
RewriteEngine on
RewriteBase /
RewriteRule ^(sub_directory/[^_]*)_+(.*) $1-$2 [DPI,N]
RewriteRule ^sub_directory(?:$|/(.*)) http://%{HTTP_HOST}/$1 [R=301,L]
它首先循环遍历该子目录中的URL,用单个连字符替换连续的下划线。它首先完成,因此它不会干扰可能包含下划线的其他URL。然后,它将该子目录的(已清理的)请求外部重定向到根目录。丑陋的分组确保它只适用于该文件夹。
答案 1 :(得分:1)
Answer from @Walf已关闭但需要进行一些更改,例如正则表达式锚点和DPI
标志。
您可以在网站根目录上使用这些规则.htaccess :
RewriteEngine On
# remove /sub_directory/ when there is no _ left
RewriteRule ^sub_directory/([^_]+)$ /$1 [R=301,NC,NE,L]
# use recursion based rule to replace _ by -
RewriteRule ^(sub_directory/[^_]*)_+(.*)$ $1-$2 [NC,N,DPI]
# rest of your rules go here