Tengo una configuración en la que un sitio web estático se encuentra en la carpeta raíz y Wordpress se encuentra en una subcarpeta. Entonces necesito reescribir todas las solicitudes a index.html mientras que todas las solicitudes relacionadas con Wordpress deben ir a la subcarpeta. Lo logro usando dos archivos .htaccess: uno en la raíz y otro en la subcarpeta de Wordpress.
Raíz .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-.+
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteRule (wp-.*)$ /wordpress/$1 [L]
# Rewrite rule for frontend
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
Subcarpeta de Wordpress .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
Esto funciona, pero cuando intento abrir, /wp-admin/
me redirigen /wp-login.php?redirect_to=https%3A%2F%2Fwww.example.com%2Fwordpress%2Fwp-admin%2F&reauth=1
para que la subcarpeta quede expuesta en la URL.
¿Hay alguna manera de ocultar la subcarpeta?
Respuesta1
Para ocultar la subcarpeta en la URL para solicitudes relacionadas con WordPress, puede modificar ligeramente su configuración. Puede mantener el archivo raíz .htaccess tal como está, pero realizar algunos cambios en el archivo .htaccess en la subcarpeta de WordPress. Así es como puedes hacerlo:
- Modifique el archivo .htaccess en la subcarpeta de WordPress (
e.g.,
/wordpress/) de la siguiente manera:
Agregue esta línea para evitar exponer la subcarpeta en la URL
ReescribirCond %{REQUEST_URI} !^/wordpress/
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wordpress/index.php [L]
Al agregar la condición RewriteCond %{REQUEST_URI} !^/wordpress/, te aseguras de que las solicitudes a la carpeta /wp-admin/ no se verán afectadas por esta regla de reescritura, por lo que la subcarpeta no quedará expuesta en la URL. para solicitudes relacionadas con WordPress.
En su archivo raíz .htaccess, puede simplificar las reglas para reescribir a
Reescribir motor encendidoindex.html
:Excluir solicitudes a la subcarpeta /wordpress/ de esta regla
ReescribirCond %{REQUEST_URI} !^/wordpress/
Reescribir regla para frontend
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L]
Con estas modificaciones, las solicitudes relacionadas con WordPress seguirán siendo manejadas por la subcarpeta de WordPress y la subcarpeta no estará expuesta en la URL al acceder a /wp-admin/. Otras solicitudes se reescribirán en index.html en la carpeta raíz como antes.