.htaccess 重定向 301 - 单页运行正常,但主页不行

.htaccess 重定向 301 - 单页运行正常,但主页不行

我正在尝试将一些特定页面重定向到我的新网站上的新页面(这些重定向工作正常),最后重定向到我的主页或(甚至更好)我的主页和所有我没有单独重定向到我的新网站主页的页面。这是我的.htaccess主页的样子:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Redirect 301 /url1 https://newurl1
Redirect 301 /url2 https://newurl2
Redirect 301 /url3 https://newurl3

A 尝试添加一行,Redirect 301 / https://newsite.com但不起作用。我认为这与RewriteRule我之前发现的内容有关?

感谢您的帮助

答案1

如果您已将整个站点迁移到新服务器/域,那么您可能不需要现有的# BEGIN/END WordPress块 - 因此应该将其删除。

然后,您可以使用一系列 mod_aliasRedirect指令(就像您之前所做的那样)和一个RedirectMatch指令将其他所有内容重定向到新网站的主页。虽然可能只是一个例子,但您现有的Redirect指令是严格无效的。该Redirect指令是前缀匹配的,匹配后的所有内容都会复制到目标 URL 的末尾,因此不能使用它来将多个重定向到一个。这就是为什么我们需要RedirectMatch在最后一部分使用指令,该指令与正则表达式匹配。

例如:

# Specific redirects
Redirect 301 /url1 https://new.example/newurl1
Redirect 301 /url2 https://new.example/newurl2
Redirect 301 /url3 https://new.example/newurl3

# Redirect everything else to the homepage
RedirectMatch 301 ^/ https://new.example/

请注意,如上所述,Redirect指令是前缀匹配的,因此上述内容实际上会重定向/url1/somethinghttps://new.example/newurl1/something。如果您担心这一点,则需要RedirectMatch始终使用。或者使用 mod_rewrite。

由于该指令的前缀匹配特性Redirect,如果您在源 URL 上省略了尾部斜杠,则应在目标上省略尾部斜杠。同样,如果您在源中包含尾部斜杠,则在目标上也包含尾部斜杠。否则,如果重定向多个 URL,您将获得格式错误的重定向。

建议不要混合使用 mod_rewrite 和 mod_alias 的指令,因为您可能会遇到意外冲突(因为它们不一定按照指令在配置文件中出现的顺序进行处理)。

参考:


在旁边:不建议大量重定向到主页(多对一)。搜索引擎(例如 Google)可能会将此视为软 404(并在 GSC 中对此发出警告)。这会让没有看到他们期望的页面的用户感到困惑。通常,最好在新网站上重定向到相同的 URL,并提供自定义 404(如果内容已被删除),其中包含有关旧/缺失内容的信息以及指向主页和您网站上其他页面的适当链接。这为搜索引擎提供了更好的信号,并为用户提供了更有意义的响应。

相关内容