.htaccess 无法实现此htaccess重定向

gkl3eglg  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(209)

我有一个maindomain.com包含一个网站,这里的一些页面应该被临时重定向到我的子域tmp.maindomain.com。所以我使用了这个重定向,它重定向到tmp.maindomain.com,我得到了一个无限循环重定向到tmp.maindomain.com

redirect 301 /mypage.php https://tmp.maindomain.com/mypage.php

我的目标是,如果任何用户试图访问https://www.maindomain.com/mypage.phphttps://maindomain.com/mypage.php,他应该被重定向302到https://tmp.maindomain.com/mypage.php
谢谢你们的帮助。

pjngdqdw

pjngdqdw1#

如果子域和主域指向同一个位置(或主域的子目录),则会出现无限循环。
在这种情况下,您将需要使用mod_rewrite(与mod_alias相对)并显式检查请求的主机名。
这里的一些页面应该被重定向临时
但是你也使用了一个301permanent重定向。你需要使用一个302来代替。301是由浏览器持久缓存的,所以你需要确保在测试之前清除所有缓存。
在子域的.htaccess文件的 top 处,在任何现有的mod_rewrite指令之前,尝试执行以下操作。

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?maindomain\.com [NC]
RewriteRule ^mypage\.php$ https://tmp.maindomain.com/$0 [R,L]

请注意,RewriteRulepattern(第一个参数)匹配的URL路径不以斜杠开头(与mod_alias Redirect指令不同)。
$0反向引用包含与整个RewriteRule * 模式 * 匹配的URL路径。例如,在本例中为mypage.php。这只是为了避免重复,因为您将重定向到目标上的相同URL路径。
这默认为302临时重定向。

相关问题