Я пытаюсь настроить правила перезаписи для моего сайта, работающего на nginx. Если кто-то заходит на сайт, я хочу, чтобы он видел содержимое, mysite.com/wordpress
но URL-адрес не должен меняться, он должен оставаться, mysite.com
. Но если кто-то заходит, mysite.com/some_file.php
он должен видеть этот файл. В моем блоке местоположения, когда я добавляю перенаправление 301, это работает, но когда я добавляю некоторые правила перезаписи, они не работают, и я вижу содержимое корня на example.com. Пожалуйста, подскажите, как заставить правила перезаписи работать.
это работает, но с изменением URL-адреса example.com/wordpress
(что не является желаемым результатом)
location = / {
return 301 http://example.com/wordpress;
}
это не работает
КОНФИГУРАЦИЯ PHP NGINX:
location = / {
# return 301 http://example.com/wordpress;
# nginx configuration
if ($http_host ~ "^(www.)example.com$"){
rewrite ^(.*)$ /wordpress/ break;
}
if ($http_host ~ "^(.*).example.com"){
rewrite ^(.*)$ http://example.com/wordpress/%1/$1 redirect;
}
if (!-e $request_filename){
rewrite ^(.*)$ /wordpress/$1;
}
rewrite ^/(.*)index\.(php)$ http://$http_host/$1 redirect;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass php;
}
решение1
Я исправил это, добавив
try_files $uri $uri/wordpress /wordpress/index.php?$args;
в location / block и удаляя все остальные правила перезаписи. Что он делает, так это сначала пытается запросить файл, затем /wordpress подпапку, затем index.php в подпапке.