rewriterule mod_rewrite ifmodule htaccess ejemplos apache .htaccess mod-rewrite

apache - ifmodule - ¿Cómo hago para que mod_rewrite suprima el procesamiento de más reglas?



mod_rewrite htaccess (2)

Dado mi actual archivo .htaccess, ¿cómo lo modificaría para verificar una ruta URL adicional como ''/ src / pub / '' y volver a escribirla en ''/ '' sin afectar la reescritura actual?

Aquí está el archivo original .htaccess:

RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

y aquí está mi intento reciente (que no funciona):

RewriteEngine on RewriteRule ^/src/pub/(.*)$ /$1 [R] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

Editar: Aquí hay algunos ejemplos de lo que quiero lograr:

Nueva regla adicional:

From: http://www.mysite.com/src/pub/validfile.php To: http://www.mysite.com/validfile.php From: http://www.mysite.com/src/pub/user/detail/testuser To: http://www.mysite.com/user/detail/testuser

Regla existente (que ya funciona):

From: http://www.mysite.com/user/detail/testuser To: http://www.mysite.com/index.php?route=user/detail/testuser


Supongo que el problema es que la URL está siendo reescrita por la primera regla y luego reescrita por la segunda.

La solución a eso es agregar la bandera "última" a la primera regla, como esta:

RewriteRule ^/src/pub/(.*)$ /$1 [R,L]


dentro de un archivo .htaccess, use esto en su lugar:

RewriteRule ^src/pub/(.*)$ /$1 [R]

el "/" inicial no coincidirá dentro de .htaccess, solo dentro de httpd.conf ( src - parte inferior de la página) si desea detener el procesamiento de otras reglas, luego agregue el indicador L :

RewriteRule ^src/pub/(.*)$ /$1 [L,R]

reescribir la comparación de registros (contexto .htaccess):

// using ^/src/pub/(.*)$ - leading slash will not work in .htaccess context! (1) pass through /home/test/src // using ^src/pub/(.*)$ (2) rewrite ''src/pub/testme'' -> ''/testme'' (2) explicitly forcing redirect with http://test/testme (1) escaping http://test/testme for redirect (1) redirect to http://test/testme [REDIRECT/302]