2009-08-10 14 views
5

Tengo el siguiente problema. Tengo un sitio web y un blog en un subdirectorio. Ambos son php. Tengo un archivo .htaccess en la carpeta raíz y otro en la carpeta del blog. No creo que sea relevante, pero el script del blog es wordpress.cómo escribir un rewriteCond en .htaccess para excluir un subdirectorio y sus subdivisiones

que añade una condición en el .htaccess de la raíz para saltarse las peticiones formuladas por el blog,

rewriteCond %{REQUEST_URI} !^/blog.* 

Aquí es cómo se ve. Quité el resto del archivo:

Options +FollowSymlinks -MultiViews RewriteEngine on 

RewriteBase/RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/ 

// my added line RewriteCond %{REQUEST_URI} !^/blog.* 


RewriteCond %{HTTP_HOST} !^www\. RewriteRule .* http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteRule ^(all)/([^/]+)/?$ story.php?title=$2 [L] RewriteRule ^(all)/?$ ?category=$1 [L] 

RewriteRule ^/?$ index.php [L] RewriteRule ^advanced-search/?$ advancedsearch.php [L] ... 

El problema que tengo está relacionado con las solicitudes de blog. Por ejemplo, a veces, si intento abrir una url, funciona bien, a veces se abre la página principal (página raíz, no el blog). Parece muy extraño. Creo que está relacionado con el anfitrión. Cuando el host está ocupado, la página del blog que solicito no se encuentra, por lo que la solicitud va a la raíz .htaccess.

tengo 2 preguntas:

  • cómo escribir una regla y dónde lugar a excluir todas las solicitudes para /blog para ser reescrita por la raíz .htaccess? las solicitudes de blog pueden ser con el aspecto http: //test.com/blog, http: //test.com/blog/, http: //test.com/blog/title, http: //test.com/blog/title /, http: //test.com/blog/category/title
  • ¿Alguien tiene alguna idea de lo que sucede? ¿Por qué cuando abro una página de blog, se abre la página de inicio de la raíz, y si actualizo la página, ésta va a la página de publicación del blog?
+0

Podría por favor formatear el código para que sea más "legible" (= saltos de línea en los lugares correctos)? ¡Gracias! –

Respuesta

2

Eche un vistazo a mod_rewrite documentation, específicamente el indicador -d en RewriteCond.

Debe ser algo como esto:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule HERE 
Cuestiones relacionadas