将旧域的每个页面重定向到新域上的同一页面 URL
Redirect Each Page of Old Domain to Same Page URL on the New Domain
我知道有人问过这个问题,但我仍然找不到确切的答案。我已经更改了我的域名。所有网站文件和网址仍然相同。旧域仍然指向同一台服务器,我在 htaccess 文件中有以下代码。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$
RewriteRule ^(.*)$ "https\:\/\/www\.newdomain\.com\/" [R=301,L]
问题是这只会重定向旧域主页。我该怎么做才能不必为每个页面添加单独的重定向。
听起来您在 .htaccess
文件中将这些指令放在了错误的位置。他们需要放在文件的开头,而不是结尾。
这些指令看起来是典型的 cPanel 生成的重定向。 cPanel 总是将重定向放在 .htaccess
文件的末尾(这通常是不正确的)。
如果您在此之前有一个前端控制器(例如 WordPress 使用的),那么您会发现这些指令只会针对对文档根目录(即 "homepage")的请求进行处理,因为所有其他请求将被前端控制器停止。
这些指令也可以简化:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com [NC]
RewriteRule (.*) https://www.newdomain.com/ [R=301,L]
我删除了 CondPattern 末尾的 $
以匹配 FQDN(以点结尾)。
在 RewriteRule
替换 中也不需要反斜杠转义冒号、斜杠和点,因为这些字符在这里没有特殊含义(它不是正则表达式). (这种不必要的转义是 cPanel 的典型特征。)
我知道有人问过这个问题,但我仍然找不到确切的答案。我已经更改了我的域名。所有网站文件和网址仍然相同。旧域仍然指向同一台服务器,我在 htaccess 文件中有以下代码。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$
RewriteRule ^(.*)$ "https\:\/\/www\.newdomain\.com\/" [R=301,L]
问题是这只会重定向旧域主页。我该怎么做才能不必为每个页面添加单独的重定向。
听起来您在 .htaccess
文件中将这些指令放在了错误的位置。他们需要放在文件的开头,而不是结尾。
这些指令看起来是典型的 cPanel 生成的重定向。 cPanel 总是将重定向放在 .htaccess
文件的末尾(这通常是不正确的)。
如果您在此之前有一个前端控制器(例如 WordPress 使用的),那么您会发现这些指令只会针对对文档根目录(即 "homepage")的请求进行处理,因为所有其他请求将被前端控制器停止。
这些指令也可以简化:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com [NC]
RewriteRule (.*) https://www.newdomain.com/ [R=301,L]
我删除了 CondPattern 末尾的 $
以匹配 FQDN(以点结尾)。
在 RewriteRule
替换 中也不需要反斜杠转义冒号、斜杠和点,因为这些字符在这里没有特殊含义(它不是正则表达式). (这种不必要的转义是 cPanel 的典型特征。)