.htaccess y WordPress: excluir carpeta de RewriteRule

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  RewriteEngine On RewriteBase / RewriteRule ^/csNewsAd($|/) - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]  # 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 

 RewriteCond %{REQUEST_URI} !^/(csNewsAd|csNewsAd/.*)$ 

en lugar de

 RewriteRule ^/csNewsAd($|/) - [L] 

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.

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  RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # RewriteRule . /index.php [L] # Original line RewriteRule ./ /index.php [L] # New line  # END WordPress 

.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.

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 Rails .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.

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.

                   

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?

Deberías probar este

 # BEGIN WordPress  RewriteEngine On RewriteBase / RewriteRule ^/(gadget)/(.*) /gadget/$2 [R] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]  # 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.

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

Sé que es una publicación anterior, pero aún así me ayudó. Tuve el problema adicional de varios bloques de RewriteRules:

 ## ## White listed folders ## RewriteCond %{REQUEST_URI} !^/(phplist|phplist/.*)$ RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{REQUEST_FILENAME} !/.well-known/* RewriteCond %{REQUEST_FILENAME} !/storage/app/uploads/.* RewriteCond %{REQUEST_FILENAME} !/storage/app/media/.* ... RewriteCond %{REQUEST_FILENAME} !/modules/.*/(assets|resources)/.* RewriteRule !^index.php index.php [L,NC] ## ## Block all PHP files, except index ## RewriteCond %{REQUEST_URI} !^/(phplist|phplist/.*)$ RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{REQUEST_FILENAME} \.php$ RewriteRule !^index.php index.php [L,NC] ## ## Standard routes ## RewriteCond %{REQUEST_URI} !^/(phplist|phplist/.*)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] 

y tuve que agregar mi RewriteCond antes de cada bloque …