У меня есть веб-сайт на wordpress, обслуживаемый nginx:
server {
listen 80;
server_name my_wordpress.example.com;
root /var/www/wordpress;
index index.php;
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param REQUEST_URI $request_url;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
}
}
Я хочу разместить один простой веб-сайт, состоящий только из одного файла, скажем, index.php
, чтобы временно захватить его корневой URL-адрес моего домена, сохраняя при этом доступ к веб-сайту wordpress по другому URL-адресу.
Как лучше всего добиться этого?
Я пошел в направлении установки переменной, когда пользователь обращается к URL-адресу, направленному на сайт wordpress :
location /original-site {
set $request_url $request_uri;
set $original_site "true";
rewrite ^/original-site$ /; }
if ($original_site = "true") {
set $request_url /; }
перенаправляет корневой URL-адрес в другое место :
if ($original_site != "true") {
rewrite ^/$ /new_website redirect; }
Я использую $ request_url
в php:
fastcgi_param REQUEST_URI $request_url;
Я пока не очень успешен, я могу найти ошибки и настроить этот подход, существует ли более элегантный способ, как это сделать?
Если вы уверены, что хотите обслуживать только простой индексный файл при обращении к корневой части вашего сайта, почему бы вам не добавить для этого только местоположение = /
? Без каких-либо переменных, перепишите
или if
(помните лучше искать решение без if
).
Вся серверная часть может выглядеть следующим образом:
server {
listen 80;
server_name my_wordpress.example.com;
root /var/www/wordpress;
index index.php;
location = / {
# I'd add an expires 10s; or whatever
return 302 original-site;
}
location = /original-site {
root /var/www/a_special_other_path; # where you stored the special index file to temporarily serve
try_files index.php index.html;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param REQUEST_URI $request_url;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
}
}
Таким образом, если кто-то попытается получить доступ именно к my_wordpress.example.com, то он получит файл индекса из специального каталога. Но все остальные обращения (к my_wordpress.example.com/anything.php) будут обработаны другим блоком локации.
Если вы хотите временно обслуживать более чем простой index.html (например. ), то в блоке location = /
можно использовать те же параметры, что и в блоке location ~ \.php$
.
И как только вы закончите, просто прокомментируйте расположение location = /
, и вы вернетесь к первоначальной конфигурации.