ブログを から に移動中a.com
ですb.com
。ここで、すべてのブログ投稿 (約 100 件) が に移動されたことを Google /bookmarks に伝えたいと思いますb.com
。ブログ投稿のみをリダイレクトしたいだけで、他には何もありません。
nginx のmapモジュールについて読んだ後、次のことを試しました。
map_hash_bucket_size 128;
map $uri $new {
/post http://b.com/post
# (repeated for all 100 posts)
}
そして、server
ブロック内に次の行を入れると:
rewrite ^ $new redirect;
100 件の投稿すべてがリダイレクトされますが、ドメインの他のすべてのページで次のエラーが発生します: 302 Found
.
構成内のサーバーブロック全体を次に示します。
server {
listen 80;
server_name b.com;
root /my/old/path/;
index index.html;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
# example.com/index gets redirected to example.com/
location ~* ^(.*)/index$ {
return 301 $scheme://$host$1/;
}
# example.com/foo/ loads example.com/foo/index.html
location ~* ^(.*)/$ {
try_files $1/index.html @backend;
}
# example.com/a.html gets redirected to example.com/a
location ~* \.html$ {
rewrite ^(.+)\.html$ $scheme://$host$1 permanent;
}
# anything else not processed by the above rules:
# * example.com/a will load example.com/a.html
# * or if that fails, example.com/a/index.html
location / {
try_files $uri.html $uri/index.html $uri @backend;
}
# default handler
# * return error or redirect to base index.html page, etc.
location @backend {
try_files /404.html 404;
}
location ~ \.php$ {
expires off;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_pass php;
}
# apply the rewrite map
rewrite ^ $new redirect;
}
try_files
地図が場所の呼び出しを妨げていると思います\
(必要です)。