Estou tentando configurar regras de reescrita para meu site em execução no nginx. Se alguém acessar o site, quero que veja o conteúdo, mysite.com/wordpress
mas o URL não deve mudar, deve permanecer, mysite.com
. Mas se alguém acessar, mysite.com/some_file.php
poderá ver esse arquivo. No meu bloco de localização, quando adiciono um redirecionamento 301, ele funciona, mas quando adiciono algumas regras de reescrita elas não funcionam e vejo o conteúdo do root em example.com. Por favor, sugira como fazer as regras de reescrita funcionarem.
isso funciona, mas com uma mudança no URL para example.com/wordpress
(o que não é o resultado desejado)
location = / {
return 301 http://example.com/wordpress;
}
isso não funciona
CONFIGURAÇÃO 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;
}
Responder1
Eu consertei isso adicionando
try_files $uri $uri/wordpress /wordpress/index.php?$args;
para localização/bloqueio e remoção de todas as outras regras de reescrita. O que ele faz é primeiro tentar solicitar o arquivo, depois a subpasta /wordpress e depois o index.php na subpasta.