.htaccess no se comporta como se desea

.htaccess no se comporta como se desea

Aunque soy nuevo en htaccess, he estado aprendiendo mucho en los últimos días, pero estoy atascado en cierta parte que provocó que el sitio web no se comportara como deseaba. Aquí está la parte del código donde tengo mi delima:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f
Rewriterule ^ %{REQUEST_FILENAME}.php [NC]
# RewriteCond /templates/%{REQUEST_FILENAME}.html -f
RewriteRule ^([^/\.]+)$ index.php?$1 [NC,S=1]
RewriteRule ^([a-zA-Z0-9]+)$ product.php?product_id=$1 [NC]

El primer RewriteCond y RewriteRule funciona perfecto. Mi problema con lo que viene después.

Lo que necesito lograr es que cuando un usuario ingrese/Alguna palabrabuscaría si un archivo con el mismo nombre es válido en el/plantillascarpeta y, por lo tanto, serviría comoindex.php?alguna palabra, de lo contrario se serviría comoproduct.php?product_id=alguna palabra. La laindex.phpLa regla funciona bien cuando la segunda condición está comentada, pero cuando se agrega solo laproducto.phpla regla funciona.

La "etiqueta" proporcionada puede ser números, letras, palabras con guiones (es decir, cualquier palabra) o una combinación de números y letras. Las reglas no deben distinguir entre mayúsculas y minúsculas.

Agradezco cualquier ayuda al respecto.

Respuesta1

El problema es que %{REQUEST_FILENAME}es elabsolutoruta traducida de la URL, es decir, parahttp://ejemplo.com/foobarpuede ser algo así como /var/www/vhost/example.com/httpdocs/foobar(dependiendo de cómo esté configurado su servidor web). Le sugiero que utilice la coincidencia de patrones en la URL como en

RewriteCond %{DOCUMENT_ROOT}/templates/$1.html -f
RewriteRule ^([^\/\.]+)$ index.php?$1 [NC,S=1]

(Aunque no probé eso)

información relacionada