Tengo 8 líneas de reglas de reescritura en mi archivo .htaccess. Necesito excluir dos directorios físicos en mi servidor de estas reglas, para que puedan ser accesibles. Por ahora, todas las solicitudes se envían al archivo index.php.
Directorios a excluir: "admin" y "usuario".
Por lo tanto, las solicitudes http: http://www.domain.com/admin/ no deben pasarse al archivo index.php.
ErrorDocument 404 /index.php?mod=error404
Options FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^([^/] )/([^/] )\.html$ index.php?lang=$1&mod=$2 [L]
RewriteRule ^([^/] )/$ index.php?lang=$1&mod=home [L]
.htaccess
mod-rewrite
url-rewriting
Kelvin
fuente
fuente
[^/]
ya que un espacio simple si no se permite allí (se debe escapar con\<space>
).Respuestas:
Pruebe esta regla antes que sus otras reglas:
Esto finalizará el proceso de reescritura.
fuente
($|/)
debería manejar ambos casos.RewriteCond
siempre requiere un alRewriteRule
que está conectado. Y agregar esta condición como negadoRewriteCond
a cada unoRewriteRule
puede ser bastante voluminoso, una solaRewriteRule
como una salida por encima de las que deberían ignorarse en ese caso es más elegante.Lo que también podría hacer es poner un archivo .htaccess que contenga
En las carpetas que desea excluir de la reescritura (según las reglas en un archivo .htaccess que está más arriba en el árbol). Simple pero efectivo.
fuente
AllowOverride
cualquier otra cosa que no seaNone
en la configuración de apache) obliga a apache a buscar .htaccess en cada solicitud. por lo que si usted tiene un sitio web de alto frecuentados / servidor web que el sistema de archivos / disco duro de acceso podría tener un impacto en el rendimiento imense ...agregue una condición para verificar el directorio de administración, algo como:
fuente
Si desea eliminar un directorio particular de la regla (es decir, desea eliminar el directorio foo ), puede usar:
La rewriteRule anterior reescribirá todas las solicitudes a /index.php excluyendo las solicitudes de / foo / .
Para excluir todas las directivas existentes, deberá utilizar la siguiente condición sobre su regla:
la siguiente regla
reescribe todo (excepto las directivas ) a /index.php .
fuente
Utilizamos la siguiente regla mod_rewrite:
Esto redirige (permanentemente con una redirección 301) todo el tráfico al sitio a http://www.newdomain.com , excepto las solicitudes de recursos en los directorios / test y / my-folder. Transferimos al usuario al recurso exacto que solicitaron utilizando el grupo de captura (. *) Y luego incluyendo $ 1 en la nueva URL. Cuidado con los espacios.
fuente
fuente