Coloque los archivos HTML estáticos en la ruta debajo de la página de WordPress

4

Tengo una instancia de WordPress ejecutándose en la raíz de mi dominio.

Una página de WordPress se encuentra en www.example.com/product/ . Coloqué algunos archivos HTML estáticos en una ruta debajo para que los visitantes puedan ir a www.example.com/product/documentation/ donde viven index.html y otros archivos HTML.

Ahora puedo acceder a los archivos HTML estáticos muy bien, pero cuando voy al sitio de WordPress (es decir, www.example.com/product/ ), obtengo un error 403 Prohibido.

¿Cómo puedo hacer que los archivos HTML estáticos estén disponibles en esa URL mientras mantengo el acceso a la página de WordPress?

Aquí está mi archivo .htaccess (creo que es el valor predeterminado no modificado)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Lo siento si esta pregunta ya ha sido respondida, pero solo he encontrado preguntas sobre problemas con la visualización del contenido estático en lugar del contenido de WordPress.

    
pregunta Johannes Dorn 18.08.2017 - 09:52

1 respuesta

1

Al crear un directorio físico igual que una URL de WordPress (virtual), ha creado un conflicto. La URL debe enrutarse a través de WP, pero el controlador frontal predeterminado (el código .htaccess que se muestra arriba) excluye específicamente que los directorios físicos no se vuelvan a escribir.

El error 403 Prohibido se produce porque no tiene un documento de índice de directorio (por ejemplo, index.html o index.php ) en el subdirectorio /product . (Y tampoco quieres uno, solo en caso de que te lo preguntes).

Dependiendo de su sitio, simplemente puede eliminar la verificación del directorio en el controlador frontal. Por ejemplo (solo comentado):

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Esto significará que las solicitudes de cualquier directorios físicos (solo el directorio desnudo) no serán accesibles, se pasarán a través de WP. Sin embargo, es probable que esto entre en conflicto con su URL /product/documentation/ . En cuyo caso, puede agregar algo como lo siguiente antes de las directivas anteriores:

RewriteRule ^product/documentation/$ /product/documentation/index.html [L]

(De lo contrario, obtendrás un WordPress 404 si se solicita algún directorio físico, donde la URL no existe en WP)

Alternativamente, puede hacer explícitamente una excepción para este subdirectorio y enrutarlo manualmente a través de WP (es decir, reescribirlo a index.php ). Por ejemplo, antes del controlador frontal existente (en la parte superior del archivo), agregue lo siguiente:

RewriteRule ^product/?$ /index.php [L]
    
respondido por el MrWhite 18.08.2017 - 22:38

Lea otras preguntas en las etiquetas