将旧域重定向到新域 - Rewriterule
Redirect old domain to new domain - Rewriterule
以下是我在 htaccess 文件中的重定向规则。他们重定向 https://olddomain.com to https://subdomain.domain.com
但是网页没有被重定向。我还有旧域名。com/page1 loading.
`RewriteCond %{HTTP_HOST} ^old\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.old\.com$
RewriteRule ^/?$ "https\:\/\/subdomain\.domain\.com\/" [R=301,L]`
我添加了以下部分有效的规则,域后面的斜杠丢失了。现在重定向是 https://subdomain.domain.compage1 而不是
https://subdomain.domain.com/page1
RewriteRule ^ https\:\/\/subdomain\.domain\.com\/{REQUEST_URI} [L,R=301]
如何解决这个问题。请任何帮助。 (我尝试了重定向,但最后没有转义 \ 但这没有用。
RewriteRule ^ https\:\/\/subdomain\.domain\.com{REQUEST_URI} [L,R=301])
RewriteCond %{HTTP_HOST} ^old\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.old\.com$
RewriteRule ^/?$ "https\:\/\/subdomain\.domain\.com\/" [R=301,L]
这些仅重定向主页(根目录)。要将任何 URL-路径重定向到目标的相同 URL-路径,请改用以下内容:
RewriteCond %{HTTP_HOST} ^(www\.)?old\.com [NC]
RewriteRule ^ https://subdomain.domain.com%{REQUEST_URI} [R=301,L]
我结合了你的两个条件。
请注意,语法是 %{REQUEST_URI}
(带有 %
前缀)以引用 REQUEST_URI
服务器变量。 "{REQUEST_URI}" 否则只是文字文本。
不需要对 substition 字符串中的所有字符进行反斜杠转义。
测试前清除浏览器缓存。最好使用 302(临时)重定向进行测试,以避免潜在的缓存问题。
I added the following rule which is working partially, the slash after
the domain is missing. Now the redirect is
https://subdomain.domain.compage1
instead of
https://subdomain.domain.com/page1
RewriteRule ^ https\:\/\/subdomain\.domain\.com\/{REQUEST_URI} [L,R=301]
除非使用所述指令无法做到这一点 - 您可能看到的是缓存的响应,这是由于先前的错误重定向造成的。 301(永久)重定向由浏览器持久缓存。始终使用 302(临时)重定向进行测试,理想情况下禁用浏览器开发工具的浏览器缓存(“网络”选项卡上的选项)。
备选方案
这需要放在根 .htaccess
文件中(如果它在子目录 .htaccess
中,它将不起作用,这与上面的规则不同)。
RewriteCond %{HTTP_HOST} ^(www\.)?old\.com [NC]
RewriteRule (.*) https://subdomain.domain.com/ [R=301,L]
这使用反向引用而不是 REQUEST_URI
服务器变量。
此重定向需要靠近 .htaccess
文件的顶部,在大多数其他指令之前。
确保您在测试前已清除浏览器缓存。
以下是我在 htaccess 文件中的重定向规则。他们重定向 https://olddomain.com to https://subdomain.domain.com 但是网页没有被重定向。我还有旧域名。com/page1 loading.
`RewriteCond %{HTTP_HOST} ^old\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.old\.com$
RewriteRule ^/?$ "https\:\/\/subdomain\.domain\.com\/" [R=301,L]`
我添加了以下部分有效的规则,域后面的斜杠丢失了。现在重定向是 https://subdomain.domain.compage1 而不是 https://subdomain.domain.com/page1
RewriteRule ^ https\:\/\/subdomain\.domain\.com\/{REQUEST_URI} [L,R=301]
如何解决这个问题。请任何帮助。 (我尝试了重定向,但最后没有转义 \ 但这没有用。
RewriteRule ^ https\:\/\/subdomain\.domain\.com{REQUEST_URI} [L,R=301])
RewriteCond %{HTTP_HOST} ^old\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.old\.com$
RewriteRule ^/?$ "https\:\/\/subdomain\.domain\.com\/" [R=301,L]
这些仅重定向主页(根目录)。要将任何 URL-路径重定向到目标的相同 URL-路径,请改用以下内容:
RewriteCond %{HTTP_HOST} ^(www\.)?old\.com [NC]
RewriteRule ^ https://subdomain.domain.com%{REQUEST_URI} [R=301,L]
我结合了你的两个条件。
请注意,语法是 %{REQUEST_URI}
(带有 %
前缀)以引用 REQUEST_URI
服务器变量。 "{REQUEST_URI}" 否则只是文字文本。
不需要对 substition 字符串中的所有字符进行反斜杠转义。
测试前清除浏览器缓存。最好使用 302(临时)重定向进行测试,以避免潜在的缓存问题。
I added the following rule which is working partially, the slash after the domain is missing. Now the redirect is
https://subdomain.domain.compage1
instead ofhttps://subdomain.domain.com/page1
RewriteRule ^ https\:\/\/subdomain\.domain\.com\/{REQUEST_URI} [L,R=301]
除非使用所述指令无法做到这一点 - 您可能看到的是缓存的响应,这是由于先前的错误重定向造成的。 301(永久)重定向由浏览器持久缓存。始终使用 302(临时)重定向进行测试,理想情况下禁用浏览器开发工具的浏览器缓存(“网络”选项卡上的选项)。
备选方案
这需要放在根 .htaccess
文件中(如果它在子目录 .htaccess
中,它将不起作用,这与上面的规则不同)。
RewriteCond %{HTTP_HOST} ^(www\.)?old\.com [NC]
RewriteRule (.*) https://subdomain.domain.com/ [R=301,L]
这使用反向引用而不是 REQUEST_URI
服务器变量。
此重定向需要靠近 .htaccess
文件的顶部,在大多数其他指令之前。
确保您在测试前已清除浏览器缓存。