我坚持这一点,我在网络服务器领域的技能很差......
我有一个Nginx作为运行mod_wsgi和mod_rewrite的Apache2的代理。我想要做的是将每个URL从www.example.com重写为example.com,即在服务之前从每个URL请求中剥离www部分。这是不同conf文件的布局:
=== /etc/nginx/sites-enabled/example.com ===:
=== /etc/apache2/sites-enabled/example.com ===:
=== /home/nabuco/public_html/example.com/example/apache/example.wsgi ===:
在我的旧设置中,我有一个运行mod_python的Apache2,我唯一需要做的就是放一个像这样的.htaccess文件:
Options -Indexes
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
完美无缺。
但我尝试将相同的.htaccess文件放入/home/nabuco/public_html/nomadblue.com/nomadblue/apache/.htaccess。如果我在没有引导www的情况下发出请求,例如http://example.com/或http://example.com/whatever,则一切顺利。但是,如果我尝试http://www.example.com/的www版本,我会被重定向到:
http://example.com/example.wsgi/
我是否必须从nginx运行重写规则?我也尝试过,将其添加到nginx conf文件中:
rewrite ^/(.*) http://example.com/$1 permanent;
但是现在我得到了firefox所谓的“循环循环”......
那么我能得到这个(我猜是微不足道的)呢?
提前致谢,
赫
答案 0 :(得分:2)
最简单的是用nginx重写。将重写规则放在绑定到www.example.com
的专用“服务器”中server { listen 80; server_name www.example.com; rewrute ^/(.*) http://example.com/$1 permanent; }
答案 1 :(得分:1)
好吧我找到了避免循环循环的解决方案......在我的nginx配置文件中创建两个server
部分,一个用于www.example.com - 其中包含rzab建议的重写规则 - - 另一个是example.com,其中包含所有其他指令。