【发布时间】:2014-04-30 18:46:19
【问题描述】:
我有一个 HTTPS 子域 https://donate.example.com/,它指向与 www 域相同的 Web 根目录。我的服务器上有一个脚本,位于 /donate/ 文件夹中,在其中我有一个 .htaccess 文件,其中包含以下代码。我想确保对http://www.example.com/donation/(或http://direct.example.com/donation/)的任何请求都会重定向到https://donate.example.com/donation/。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^donate\.example\.com$ [NC,OR]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://donate.example.com/$1 [R=301,L]
</IfModule>
我遇到的问题是 RewriteRule (^(.*)$) 中的捕获组没有被复制到目标 URL ($1),因此用户只会被重定向到 webroot 而不是完整的小路。这意味着用户被重定向到https://donate.example.com/ 而不是https://donate.example.com/donation/(这是我需要/期望的行为)。
知道为什么捕获组不起作用吗?
【问题讨论】:
-
您是否遇到了缓存问题?请进行深度重新加载或清除浏览器缓存...
-
我在命令提示符下使用 curl 测试它:
curl --head http://www.example.com/donation/。结果总是Location: https://donation.example.com/
标签: apache .htaccess mod-rewrite redirect