regex HTACCESS:重定向(301)数千个包含目录的URL到简单的URL

3lxsmp7m  于 2023-01-27  发布在  其他
关注(0)|答案(4)|浏览(130)

我需要用HTACCESS方法转换吨的URL的已经产生(和已经编入索引...)由WordPress的文章包含文件夹/子文件夹简单的URL的没有任何文件夹/子文件夹名称
示例:
https://www.website.com/Animals/Cats/mycat.htmlhttps://www.website.com/mycat.html
https://www.website.com/Animals/Dogs/mydog.htmlhttps://www.website.com/mydog.html
https://www.website.com/Countries/France/bordeaux.htmlhttps://www.website.com/bordeaux.html
等等。
我已经更改了WordPress配置中的永久链接选项。所以,现在产生的URL是在良好的格式(例如:https://www.website.com/bordeaux.html),不带任何文件夹名称。
我的问题是重定向所有旧的网址到这个新的格式,以防止404和保持排名。
如果尝试在我的. htacess中添加此行:
RewriteRule ^/(.*)\.html$ /$1 [R=301,L,NC]
我试过RedirectMatch 301 (.*)\.html$方法,结果还是一样。我快被这个弄疯了。
我做错了什么,你能帮帮我吗?
"谢谢"

8qgya5xd

8qgya5xd1#

RewriteRule ^/(.*)\.html$ /$1 [R=301,L,NC]

RewriteRule * 模式 * 匹配的URL路径从来不以斜杠开头。但是当有更多的“文件夹”时,你可以用这个来匹配最后一个路径段。并且目标URL也需要以.html结尾(根据你的例子)。
因此,这可以写在一个指令中:

RewriteRule /([^/]+\.html)$ /$1 [R=301,L]

这可以处理任何层次的嵌套“文件夹”,但是与文档根目录中的/foo.html(目标URL)不匹配(由于正则表达式中的斜杠前缀),所以没有重定向循环。
(No需要任何前述 * 条件 *。)
这里,$1反向引用包括.html后缀。

ecbunoof

ecbunoof2#

将旧URL重定向到不带文件夹名称的新URL。可以使用以下代码重定向包含.html的URL:

RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+).html$ /$5.html [L,R=301]
hec6srdp

hec6srdp3#

只需匹配URL的最后一部分并将其传递给重定向:

RewriteRule /([^/]+)\.html$ /$1.html [R=301,L,NC]

它将匹配任意数量的目录,如:

fivyi3re

fivyi3re4#

怀特先生用他的答案完成了这项工作:
RewriteRule ^/(.*)\.html$ /$1 [R=301,L,NC]
对于这种情况下的WordPress用户,将此代码添加到.htaccess中,您将获得更多的efficients SEO结果。
也谢谢tttony和jamal。做得好,解释得好!

相关问题