如何将特定文件夹的网址重定向到另一个,无论页面是什么?

问题描述 投票:0回答:1

我尝试了几个小时,在 htaccess 中将文件夹的每个页面重定向到新的 url,匹配该文件夹,但似乎我绝对不明白正则表达式和重定向的任何内容!

我想将文件夹 /folder/ 中的任何页面重定向到完全不同的网址 类似的东西

RedirectMatch 301 ^/folder$ https://www.mynewdomain.com/id/2176

为了将

https://www.myolddomain.com/folder/123.html
重定向到
https://www.mynewdomain.com/id/2176

我不想保留以前的网址的任何内容,只需将 this 文件夹的任何页面重定向到特定网址即可。

有人可以帮忙吗? 谢谢

我试过了

RewriteEngine On
RewriteRule /folder/ https://www.mynewdomain.com/id/2176

但它不起作用,当我到达包含/folder/的网址时,我没有被重定向。试过

RewriteRule ^/folder(/)?$ https://www.mynewdomain.com/id/2176 [R=301,L]
regex apache .htaccess
1个回答
0
投票
RedirectMatch 301 ^/folder$ https://www.mynewdomain.com/id/2176

字符串结尾锚点 (

$
) 标记匹配的 URL 路径的结尾。所以,这匹配
/folder
而没有其他。您需要删除字符串末尾的锚点。 IE。
^/folder
。因此这会匹配任何以
/folder
开头的 URL 路径。但是,这可能会匹配太多,因为它还会匹配根目录中仅以文本
folder
开头的任何文件(在您的情况下,这可能是问题,也可能不是问题)。要避免这种情况并仅匹配对该文件夹(和子文件夹)内的文件夹和文件的请求,请改用正则表达式
^/folder($|/)

请注意,

RedirectMatch
是一个mod_alias指令。

RewriteRule /folder/ https://www.mynewdomain.com/id/2176

RewriteRule
是 mod_rewrite 指令。在
.htaccess
中,与
RewriteRule
pattern 匹配的 URL 路径不以斜线开头。因此,您需要匹配 URL 路径
folder/
(而不是
/folder/
)。

将以上几点结合在一起,如果您使用 mod_rewrite 那么您将需要以下内容:

RewriteRule ^folder($|/) https://www.mynewdomain.com/id/2176 [R=301,L]

另请注意添加了 flags 参数。这是永久 301 重定向。因此会被浏览器查到。

您应该始终使用 302(临时)重定向进行测试,以避免缓存问题。

© www.soinside.com 2019 - 2024. All rights reserved.