像这样的东西适用于索引页面:
<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 服务器上。
我个人一直发现一个简单的 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
我总是使用否定模式,因此任何与虚拟主机匹配但与规范地址不匹配的内容都将被重定向。
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)
这一直对我有用:
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 次 |
最近记录: |