¿Cómo hago que .htaccess funcione en el directorio actual y no en los subdirectorios?

StackOverflow https://stackoverflow.com/questions/1200348

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy usando mod rewrite para acceder a mis archivos PHP en el directorio raíz de mi sitio web indirectamente. Actualmente, tengo algo como esto,

RewriteRule ^(blog|about|page3|etc)$ /$1.php [L]

Pero lo que me gustaría usar es

RewriteRule ^(.*)$ /$1.php [L]

Para no tener que actualizar mi archivo .htaccess cada vez que quiera agregar una nueva página a mi sitio web. Sin embargo, el problema con esto es que también afecta a mis subdirectorios. Lo que hace que las imágenes de CSS, javascript e inaccesibles se redireccionen a " /dir/example.png.php" ;.

Entonces, ¿cuál es la mejor solución aquí?

¿Fue útil?

Solución

Prueba esta regla:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule .* <*>.php [L]

Otros consejos

Edite el .htaccess para esto:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php [L]

Después de iniciar el motor de reescritura, primero verificará si el archivo solicitado es un archivo real en el sistema, o si en realidad es un directorio. Si no es ninguno de esos, ejecutará la regla, que en este caso es tratar de encontrar el archivo agregando .php y sirviéndolo.

Los subdirectorios, imágenes, CSS y similares estarán bien porque saldrán de la reescritura una vez que se encuentren.

Lo haría con filtros para ignorar los subdirectorios. De esa manera, solo tiene que cambiarlo si agrega una subcarpeta. Tendrá que agregar una línea como Sosh si tiene imágenes u otros archivos en la carpeta

Lo siguiente ignoraría " images " y "js" subcarpetas y redirigir todo lo demás

RewriteRule   ^images*   -  [L]
RewriteRule   ^js*       -  [L]
RewriteRule   ^(.*)$     /$1.php   [L]

Algo como esto (tenga en cuenta el!):

RewriteRule !\.(js|ico|gif|jpg|png|css|zip|gz|html|xml)$ index.php
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top