.htaccess Reescribe el subdirectorio de Wordpress sin romper otros subdirectorios
Así que tengo WordPress instalado, /wp/
pero quiero que todas las URL de WordPress se reescriban para que aparezcan en el directorio raíz. Actualmente tengo esto funcionando (ver más abajo) pero quiero cambiar mi .htaccess
para que no rompa otros subdirectorios.
Por ejemplo, si quiero visitar www.example.com/images/image.png
, actualmente me redirecciona a una página 404 en WordPress.
¿Es esto posible con .htaccess
?
Código actual:
RewriteEngine on
#Wordpress
# Rewrites all URLS without wp in them
RewriteCond %{REQUEST_URI} !^/wp/
# Rewrites all URLS [Replace "example" with the actual domain, without the TLD (.com, .net, .biz, etc)]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.
# Rewrite all those to insert /folder
RewriteRule ^(.*)$ /wp/$1 [L]
Actualización : probé la sugerencia de MrWhite con el modo incógnito y un segundo navegador. Sin efecto. Nuevo .htaccess
archivo:
RewriteEngine on
#Wordpress
# Rewrites all URLS without wp in them
RewriteCond %{REQUEST_URI} !^/wp/
# Rewrites all URLS [Replace "example" with the actual domain, without the TLD (.com, .net, .biz, etc)]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.
# Rewrite all those to insert /folder
RewriteRule ^(.*)$ /wp/$1 [L]
# Request does not map to an existing file
RewriteCond %{REQUEST_FILENAME} !-f
Respuestas
Debe agregar una condición para excluir archivos existentes; de lo contrario, una solicitud /images/image.png
se reescribirá naturalmente /wp/images/image.png
y activará un 404 en WordPress (a menos /wp/images/image.png
que realmente exista).
Por ejemplo, agregue la siguiente condición a su regla existente:
# Request does not map to an existing file
RewriteCond %{REQUEST_FILENAME} !-f
ACTUALIZACIÓN: esto no pareció funcionar. Todavía va a la página 404 de WordPress
Ha puesto la RewriteCond
directiva en el lugar equivocado.
RewriteCond
Las directivas no son declaraciones completamente separadas, son condiciones que se aplican a la RewriteRule
directiva que sigue. Por sí solas, las RewriteCond
directivas no hacen nada.
La RewriteCond
directiva debe ir (a cualquier parte) antes que la RewriteRule
directiva:
RewriteEngine on
#Wordpress
# Rewrites all URLS without wp in them
RewriteCond %{REQUEST_URI} !^/wp/
# Rewrites all URLS [Replace "example" with the actual domain, without the TLD (.com, .net, .biz, etc)]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.
# Request does not map to an existing file
RewriteCond %{REQUEST_FILENAME} !-f
# Rewrite all those to insert /folder
RewriteRule ^(.*)$ /wp/$1 [L]
Además, eche un vistazo al .htaccess
archivo "WordPress" en el /wp
subdirectorio como referencia. Eso hace el mismo tipo de cosas.
Aparte: a menos que tenga varios dominios o subdominios que no desee reescribir, puede eliminar la verificación del nombre de host (es decir, la RewriteCond
directiva que verifica la HTTP_HOST
variable del servidor).