我正在按照教程在 Rackspace 云上使用 nginx,并且已经搜索了网络,但到目前为止无法对此进行排序。
出于 SEO 和其他原因,我希望 www.mysite.com 在 .htaccess 中正常访问 mysite.com。
我的 **/etc/nginx/sites-available/www.example.com.vhost** 配置:
server { listen 80; server_name www.example.com example.com; root /var/www/www.example.com/web; if ($http_host != "www.example.com") { rewrite ^ http://example.com$request_uri permanent; }
我也试过
server { listen 80; server_name example.com; root /var/www/www.example.com/web; if ($http_host != "www.example.com") { rewrite ^ http://example.com$request_uri permanent; }
我也试过。第二次尝试都给出了重定向循环错误。
if ($host = 'www.example.com' ) { rewrite ^ http://example.com$uri permanent; }
我的 DNS 设置为标准:
site.com 192.192.6.8 A type at 300 seconds www.site.com 192.192.6.8 A type at 300 seconds
(示例 IP 和文件夹已用于示例并在将来帮助人们)。我使用 Ubuntu 11。
从文档中,“正确的方法是为 example.org 定义一个单独的服务器”:
server { listen 80; server_name example.com; return 301 http://www.example.com$request_uri; } server { listen 80; server_name www.example.com; ... }
对于那些想要解决方案的人,包括https://…
https://
server { listen 80; server_name www.domain.com; # $scheme will get the http protocol # and 301 is best practice for tablet, phone, desktop and seo return 301 $scheme://domain.com$request_uri; } server { listen 80; server_name domain.com; # here goes the rest of your config file # example location / { rewrite ^/cp/login?$ /cp/login.php last; # etc etc... } }
注意:我最初没有包含https://在我的解决方案中,因为我们使用负载平衡器并且我们的 https:// 服务器是高流量 SSL 支付服务器:我们不混合使用 https:// 和 http://。
要检查 nginx 版本,请使用nginx -v.
nginx -v
使用 nginx 重定向从 url 中去除 www
server { server_name www.domain.com; rewrite ^(.*) http://domain.com$1 permanent; } server { server_name domain.com; #The rest of your configuration goes here# }
所以你需要有两个服务器代码。
使用 nginx 重定向将 www 添加到 url
如果你需要的是相反的,从 domain.com 重定向到 www.domain.com,你可以使用这个:
server { server_name domain.com; rewrite ^(.*) http://www.domain.com$1 permanent; } server { server_name www.domain.com; #The rest of your configuration goes here# }
正如你可以想象的那样,这正好相反,工作方式与第一个示例相同。这样,您就不会降低 SEO 标记,因为它是完整的烫发重定向和移动。强制 no WWW 并显示目录!
server { server_name www.google.com; rewrite ^(.*) http://google.com$1 permanent; } server { listen 80; server_name google.com; index index.php index.html; #### # now pull the site from one directory # root /var/www/www.google.com/web; # done # location = /favicon.ico { log_not_found off; access_log off; } }