SEO の目的で /index.html を / に書き換えようとしています (index.html を / と混同し、重複したコンテンツに対してペナルティを科す愚かな検索エンジン) - また、Web 分析データを調整します。
stackoverflow や nginx のドキュメントなどで見つけたすべてのソリューションを試しましたが、成功しませんでした。私は、他の設定の問題か、痛々しいほど明らかな何かが必要だと考えています。これは私の最初のnginxのインストールです - ApacheとIISに慣れています!!
これが私のdefault.confです:
server {
listen 80;
server_name web.local;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
ここに私の virtual.conf があります (コメントアウトされたセクションは私の最近の試みでした - コメントを外すと、www.domain.com/index.html にアクセスしようとすると 301 Moved Permanently エラーが発生します):
server {
listen 80;
server_name www.domain.com;
location / {
root /var/www/html/domain.com;
index index.html;
#if ($request_uri = /index.html) {
# rewrite ^ http://www.domain.com permanent;
#}
}
}
server {
listen 80;
server_name domain.com;
rewrite ^/(.*) http://www.domain.com/$1 permanent;
}
cobaco のソリューションの HTTP 応答ヘッダー:
URL:
http://www.domain.com
http/1.1 301 moved permanently
server: nginx/1.2.8
date: Thu, 16 May 2013 01:42:58 GMT
content-type: text/html
content-length: 184
connection: keep-alive
location: http://domain.com/
Redirecting URL:
http://domain.com/
http/1.1 301 moved permanently
server: nginx/1.2.8
date: Thu, 16 May 2013 01:42:58 GMT
content-type: text/html
content-length: 184
connection: keep-alive
location: http://www.domain.com/
「location = /index.html {return 301 $scheme://domain.com/;}」という行が問題を引き起こしているのではないかと考えたので、www. 「scheme://」の後 -- これが悪いことであるかどうか教えてください! これにより、次の HTTP 応答ヘッダーが生成されました。
URL:
http://www.domain.com
http/1.1 301 moved permanently
server: nginx/1.2.8
date: Thu, 16 May 2013 01:42:58 GMT
content-type: text/html
content-length: 184
connection: keep-alive
location: http://www.domain.com/
Redirecting URL:
http://www.domain.com/
http/1.1 301 moved permanently
server: nginx/1.2.8
date: Thu, 16 May 2013 01:42:58 GMT
content-type: text/html
content-length: 184
connection: keep-alive
location: http://www.domain.com/
さらにいじくり回した後、次の構成は私がやりたいことを行いますが、if ステートメントのために理想的ではありません。助言がありますか?
server {
server_name www.domain.com;
root /var/www/html/domain.com;
index index.html;
if ($request_uri = /index.html) {
return 301 http://www.domain.com/;
}
#location = /index.html {
# return 301 $scheme://www.domain.com/;
#}
}
server {
listen 80;
server_name domain.com;
return 301 $scheme://www.domain.com$request_uri;
}