Apache 网络服务器:如何将所有对 domain.com 的请求重定向到 www.domain.com

Pra*_*ant 4 apache-2.2

像这样的东西适用于索引页面:

<VirtualHost *:80>
ServerName example.com
Redirect permanent / http://www.example.com
</VirtualHost>

<VirtualHost *:80>
ServerName http://www.example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

所以像这样的网址:

http://example.com gets forwarded to 
http://www.example.com
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

http://example.com/robots.txt
Run Code Online (Sandbox Code Playgroud)

我还在 .htaccess 中尝试了以下内容,结果相同:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=permanent,L]
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题。

完整配置:

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_balancer_module /usr/lib/apache2/modules/mod_proxy_balancer.so
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

<VirtualHost *:80>
ServerName example.com
Redirect permanent / http://www.example.com
</VirtualHost>

<VirtualHost *:80>
ServerName http://www.example.com

ProxyPass / balancer://example/ stickysession=JSESSIONID|jsessionid
ProxyPassReverse / balancer://example/ stickysession=JSESSIONID|jsessionid
ProxyPreserveHost On

<Proxy balancer://example>
BalancerMember http://host1.example.com:8080/ route=tomcat1
BalancerMember http://host2.example.com:8080/ route=tomcat2
</Proxy>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

robots.txt 位于每个 tomcat 服务器上。

Sov*_*ero 6

我个人一直发现一个简单的 301 重定向足以满足此目的:

<VirtualHost *:80>
    ServerName  oakalleyit.com
    Redirect    301 /   http://www.oakalleyit.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

它很简单,易于阅读/记忆,并且可以正确完成工作。

这实际上是从我的生产网络服务器复制的,所以我知道它有效。

这里有关于 Apache 重定向的文档:http : //httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect

我刚刚测试过,输入http://oakalleyit.com/user正确重定向到http://www.oakalleyit.com/user


fuk*_*wi2 5

我总是使用否定模式,因此任何与虚拟主机匹配但与规范地址不匹配的内容都将被重定向。

RewriteCond %{HTTP_HOST} !^www.example.com [nocase]
RewriteRule ^/(.*)$ http://www.example.com/$1 [redirect=permanent,nocase,last]
Run Code Online (Sandbox Code Playgroud)

这具有无限和未指定数量的ServerAlias指令(例如,*.example.net、*.example.org、*.example.asia 等)的好处,可以全部正确重定向到 www.example.com)


One*_*yth 2

这一直对我有用:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.co\.uk$ [NC]
RewriteRule ^(.*)$ http://www.example.co.uk/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

我想你可能遗漏了条件中的 $ 吗?

更多信息可以在这里找到: http://httpd.apache.org/docs/2.0/misc/rewriteguide.html http://httpd.apache.org/docs/current/mod/mod_rewrite.html


归档时间:

查看次数:

30724 次

最近记录:

9 年,8 月 前