Estoy intentando configurar reglas de reescritura para mi sitio que se ejecuta en nginx. Si alguien llega al sitio web, quiero que vea el contenido de, mysite.com/wordpress
pero la URL no debería cambiar, debería permanecer mysite.com
. Pero si alguien accede mysite.com/some_file.php
debería poder ver ese archivo. En mi bloque de ubicación, cuando agrego una redirección 301, funciona, pero cuando agrego algunas reglas de reescritura, no funcionan y veo el contenido de la raíz en example.com. Sugiera cómo hacer que funcionen las reglas de reescritura.
esto funciona pero con un cambio en la URL example.com/wordpress
(que no es el resultado deseado)
location = / {
return 301 http://example.com/wordpress;
}
esto no funciona
CONFIGURACIÓN DE 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;
}
Respuesta1
Lo arreglé agregando
try_files $uri $uri/wordpress /wordpress/index.php?$args;
para ubicar/bloquear y eliminar todas las demás reglas de reescritura. Lo que hace es que primero intenta solicitar el archivo, luego la subcarpeta /wordpress y luego index.php en la subcarpeta.