Saya memiliki blog yang dihosting di http://site.com/blog .
Bagaimana cara saya menginstruksikan nginx untuk menulis ulang permintaan dari site.com
ke site.com/blog
?
Ini seharusnya tidak permanen.
Saya memiliki blog yang dihosting di http://site.com/blog .
Bagaimana cara saya menginstruksikan nginx untuk menulis ulang permintaan dari site.com
ke site.com/blog
?
Ini seharusnya tidak permanen.
Jawaban:
location = / {
rewrite ^ http://site.com/blog/ redirect;
}
Ini hanya akan melakukan permintaan khusus untuk root. Jika Anda perlu menangkap semuanya (dialihkan http://site.com/somearticle/something.html
ke http://site.com/blog/somearticle/something.html
), maka Anda akan memerlukan sesuatu yang lebih terlibat:
location /blog/ {
# Empty; this is just here to avoid redirecting for this location,
# though you might already have some config in a block like this.
}
location / {
rewrite ^/(.*)$ http://site.com/blog/$1 redirect;
}
Ini tidak berhasil untuk saya. Inilah yang berhasil:
Buka file konfigurasi NGINX untuk situs Anda. Di dalam blok server, tambahkan path ke direktori root Anda dan atur urutan prioritas untuk file:
root /mnt/www/www.domainname.com;
index index.php index.html index.htm;
Buat blok lokasi kosong sebelum semua blok lokasi Anda yang lain:
location /latest {
# Nothing in here; this is to avoid redirecting for this location
}
Komentari direktif direktori root di blok lokasi / {} Anda dan tambahkan arahan ulang sehingga terlihat seperti ini:
location / {
# root /mnt/www/www.domainname.com;
index index.php index.html index.htm;
rewrite ^/(.*)$ http://www.domainname.com/latest/$1 redirect;
}
Pastikan lokasi Anda ~ .php $ block menunjukkan akarnya
root /mnt/www/www.domainname.com;
Ini memperbaikinya untuk saya.
coba ini sebagai gantinya:
location = / {
return 301 /blog/;
}
Kuncinya di sini adalah simbol '=' .
rewrite ^/(.*)$ /blog/$1 redirect
ke bagian atas blok server Anda.