我有两个子域名 a.website.com 和 b.website.com,它们指向同一个 IP 地址。我想将 b.website.com 重定向到 a.website.com:8080。我的 .htaccess 文件中有这个...
RewriteEngine on
RewriteCond {HTTP_HOST} b\.website\.com
RewriteRule ^(.*)$ http://b.website.com:8080$1 [L]
...但它不起作用。
有没有什么办法可以让它工作?
答案1
你总是可以使用一个简单的VirtualHost:
<VirtualHost *:80>
ServerName b.website.com
RedirectPermanent / http://a.website.com:8080/
</VirtualHost>
如果您更喜欢使用 .htaccess 文件,那么您在重写条件中就缺少一个 % 符号:
RewriteEngine on
RewriteCond %{HTTP_HOST} b.website.com
RewriteRule ^(.*)$ http://a.website.com:8080$1 [L]
答案2
补充主要答案
重定向类型
您可以明确指定您假装的重定向类型。
我建议您在测试重定向规则时使用临时重定向(302)。
# In a VirtualHost file
...
Redirect [301|302] /old_location http://new_domain/newlocation
# In a .httaccess file
...
RewriteRule ^(.*)$ http://new_domain/$1 [R=302,L]
指定目录匹配模式
您只能重定向符合某些模式的请求。
# In a VirtualHost file
...
RedirectMatch [301|302] ^/public/(.*)$ http://public.example.com/$1
# In a .httaccess file
...
RewriteRule ^/public/(.*)$ http://public.example.com/$1 [R=302,L]