1

我需要在迁移时将许多页面临时重定向到旧站点.htaccess

我是否只需要为每个 307 重定向添加这一行.htaccess

Redirect 307 /page_one https://www.oldsite.com/page_one

我的整个.htaccess看起来像这样:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_URI} !/(wp-content/uploads/.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Redirect 307 /page_one https://www.oldsite.com/page_one
Redirect 307 /page_two https://www.oldsite.com/page_two
</IfModule>

4

1 回答 1

1
Redirect 307 /page_one https://www.oldsite.com/page_one
Redirect 307 /page_two https://www.oldsite.com/page_two

是的,如果您只想重定向特定页面,您完全可以这样做。

但是,由于这似乎是一个 WordPress 站点,您应该将这些指令放在# BEGIN WordPress..# END WordPress块之外,因为 WP 本身会尝试维护该指令块并可能覆盖您的指令。

这些 mod_alias 指令可以放在 WP 代码块之前或之后——没关系。mod_alias 无论如何都是在 mod_rewrite 之后处理的,因此配置文件中指令的顺序实际上并不重要。

但是请注意,该Redirect指令是前缀匹配的,匹配后的所有内容都被复制到目标的末尾。因此,在您的示例中,/page_one/foo也将被重定向到https://www.oldsite.com/page_one/foo.

如果目标 URL 路径始终与源 URL 路径相同,那么您可以使用RedirectMatch带有反向引用的 mod_alias 指令来保存重复。这使用正则表达式进行匹配,而不是简单的前缀匹配。例如:

RedirectMatch 307 ^/page_three$ https://www.oldsite.com$0

这仅完全匹配/page_three并重定向到https://www.oldsite.com/page_three. 反向$0引用是与前面的正则表达式(第二个参数)匹配的整个 URL 路径,即。/page_three在这个例子中。

如果您只重定向 GET 请求,则 302(临时)就足够了,因此您可以省略状态代码,因为 302 是默认值:

RedirectMatch ^/page_four$ https://www.oldsite.com$0
于 2022-01-14T23:36:43.630 回答