plugin - .htaccess y Wordpress: excluir carpeta de RewriteRule
permalink wordpress (12)
.htaccess afecta a todos los directorios que se encuentran debajo, de modo que si coloca un .htaccess en csNewsAd con las directivas de reescritura que desea, prevalecerá sobre el archivo raíz.
Tengo este archivo .htaccess en Wordpress. Está ubicado en / public_html / (raíz web). Necesito excluir una carpeta (csNewsAd) del motor de reescritura. Intenté esto, basado en otra pregunta similar aquí en SO, pero no funcionó en absoluto.
AddHandler x-httpd-php5 .php
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/csNewsAd($|/) - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
¿Alguna sugerencia?
Más datos
Hay otro .htaccess dentro / csNewsAd para la protección con contraseña:
AuthName "Clasificados"
AuthType "basic"
AuthUserFile /home/ig000192/public_html/csNewsAd/.passwd
Require valid-user
podrías agregar algo como esto:
RewriteCond %{REQUEST_URI} !^/csNewsAd
pero esto no debería ser necesario, porque si csNewsAd de hecho es un directorio (carpeta) no debería ser reescrito en primer lugar debido a
RewriteCond %{REQUEST_FILENAME} !-d
¿Estás seguro de que no hay nada más entre usted y esa carpeta, derechos o (de hecho) otro .htaccess?
Si está utilizando mod_rewrite en un archivo .htaccess, solo necesita especificar la ruta URL sin el prefijo de ruta local en sus patrones. En su caso sin el /
encabezado como está en el documento raíz /
):
RewriteRule ^csNewsAd($|/) - [L]
Primero comencé a hacer esto con Rails. En la parte superior de los rieles .htaccess están las siguientes dos líneas.
# RewriteCond %{REQUEST_URI} ^/notrails.*
# RewriteRule .* – [L]
Cuando finalmente seguí su ejemplo, funcionó.
Quería excluir imágenes, javascripts, hojas de estilo, css, images-global, js-global (etc.), así que cambié lo anterior a.
RewriteCond %{REQUEST_URI} ^(images|javascripts|stylesheets|css|images-globa|js-global|js).*
RewriteRule .* – [L]
Y funcionó de la manera que necesitaba.
No hablaremos de cómo es que tengo tantas carpetas distintas de javascript, hojas de estilo e imágenes ...
Pero esto hace que mi archivo de "error" sea menos doloroso. Si alguien agrega un archivo de imagen que no existe, mi envío no tiene que procesarlo.
Estaba teniendo el mismo problema y encontré la respuesta a mi problema aquí: http://kb.siteground.com/article/How_to_exclude_a_folder_from_Wordpress_permalinks.html
--Desde el sitio
Para excluir las subcarpetas de las reglas de reescritura de WordPress, debe editar el archivo .htaccess y cambiar la línea en negrita a continuación:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule . /index.php [L] # Original line
RewriteRule ./ /index.php [L] # New line
</IfModule>
# END WordPress
Deberías probar este
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/(gadget)/(.*) /gadget/$2 [R]
RewriteRule ^index/.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Estoy bastante seguro de que ya ha descartado esto, pero desde que vine aquí por el mismo problema exacto, quería compartirlo con usted: en mi caso, el problema estaba en los permisos de: aparentemente, no poder acceder la carpeta, la exclusión estaba siendo ignorada.
Coloque la línea a continuación en el archivo .htaccess en la raíz.
ErrorDocument 401 default
Tenía exactamente el mismo problema y esto funcionó para mí. No es el problema que las redirecciones no funcionan. El problema es que el error 401 (Autorización requerida) no está definido, por lo que la "ventana emergente" no se muestra.
Vale la pena señalar que importa en qué parte del flujo del .htaccess va esta línea.
Vea aquí: http://tanyanam.com/technology/wordpress-exclude-directory-from-url-rewrite-with-htaccess - la línea debe venir antes que las de WordPress, no funcionará después de ellas.
Robar
Tengo GoDaddy hosting, y este problema me mató . Tuve los mismos problemas una y otra vez con opciones conflictivas de .htaccess en public_html, con mi subdirectorio protegido con contraseña.
Terminé comprando otra cuenta porque probé alrededor de un millón de modificaciones diferentes en mi archivo .htaccess y no he solucionado este problema. Estoy compartiendo mi configuración y solución, ahora, solo por integridad y claridad. (Para que lo sepas, la cuenta valió la pena de todos modos, así que no hay problema).
Si parece una combinación de las respuestas de los demás, es porque sí lo es. Tardó TODO eso en funcionar.
Estructura de directorios:
-otherfiles
---public_html
---.htaccess
-----subfolder
---.htaccess
La subcarpeta .htaccess tiene la contraseña de la función de protección, por lo que es similar a esto:
AuthType Basic
AuthName "Attendance"
AuthUserFile "/home/user/.htpasswds/public_html/attendance/passwd"
require valid-user
El public_html .htaccess originalmente tenía esto, y no funcionaba (en el sentido de que se tragaba TODO y lo redirigía, de modo que FatFreeFramework o CodeIgniter lo estaba manejando):
RewriteEngine On
RewriteCond $1 !^(index.php|resources|subfolder|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
Para solucionar este problema, agregué dos líneas a mi archivo public_html .htaccess. Y para que no adivine dónde, mostraré todo el archivo nuevamente:
RewriteEngine On
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/(subfolder|subfolder/.*)$
ErrorDocument 401 default
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
Entonces, esa es mi historia. Ahora funciona. ¡Gracias a Jory y GmonC! Yo los voté a ustedes arriba.
Aquí está mi solución con respecto al sitio de GoDaddy WordPress. Mi instalación tenía un archivo web.config, así que agregué una regla de reescritura. Quería una ruta / ApiData donde pudiera ejecutar una aplicación MVC.net (directorio virtual) para llamadas AJAX.
<system.webServer>
<!-- ... -->
<rewrite>
<rules>
<rule name="apidata" stopProcessing="true">
<match url="apidata"/>
</rule>
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="index.php"/>
</rule>
</rules>
</rewrite>
</system.webServer>
RewriteCond %{REQUEST_URI} !^/(csNewsAd|csNewsAd/.*)$
en lugar de
RewriteRule ^/csNewsAd($|/) - [L]