我正在使用通配符重定向将旧域重定向到新域。它工作得很好,但丢失了几个URL(它们不会被重定向到目标并返回状态200)
你能帮我弄明白这是怎么回事吗?可能是我的通配符重定向错误,或者是服务器问题。我的旧域名是old.example
我的新域名是new.example
.
未重定向的URL示例:old.example/example-url
这是我的.htaccess
文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
#Options +FollowSymLinks
# Redirect everything
RewriteRule ^(.*)$ https://new.example/$1 [R=301,L]
最合适的回答,由SO网友:MrWhite 整理而成
您将重定向指令放错了位置。它需要在WordPress前端控制器之前执行,否则,除了直接映射到文件系统的URL之外,重定向将被忽略。
由于这些域也在同一台服务器上(我假设是同一个托管帐户),因此您需要检查请求的主机名,否则将得到一个重定向循环。
例如:
# Redirect everything from old to new domain
RewriteCond %{HTTP_HOST} ^old\\.example [NC]
RewriteRule (.*) https://new.example/$1 [R=301,L]
# BEGIN WordPress
# :
正则表达式
^(.*)$
可简化为
(.*)
因为正则表达式在默认情况下是贪婪的。