.htaccess não se comporta conforme desejado

.htaccess não se comporta conforme desejado

Embora eu seja novo no htaccess, tenho aprendido muito nos últimos dias, mas estou preso em uma determinada parte que fez com que o site não se comportasse conforme desejado. Aqui está a parte do código onde tenho meu 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]

O primeiro RewriteCond e RewriteRule funcionam perfeitamente. Meu problema com o que acontece depois.

O que preciso conseguir é que quando um usuário insere/alguma palavraele procuraria se um arquivo com o mesmo nome é válido no/modelospasta e, portanto, serviria comoindex.php?alguma palavra, caso contrário, seria servido comoproduct.php?product_id=alguma palavra. O oindex.phpregra funciona bem quando a segunda condição é comentada, mas quando adicionada apenas aproduto.phpregra funciona.

A "etiqueta" fornecida pode ser composta por números, letras, palavras hifenizadas (ou seja, quaisquer palavras) ou uma combinação de números e letras. As regras não devem diferenciar maiúsculas de minúsculas.

Agradeço qualquer ajuda sobre o assunto.

Responder1

O problema é que %{REQUEST_FILENAME}éabsolutocaminho traduzido da URL, ou seja, parahttp://example.com/foobarpode ser algo parecido /var/www/vhost/example.com/httpdocs/foobar(dependendo de como o seu servidor web está configurado). Sugiro que você use a correspondência de padrões no URL como em

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

(eu não testei isso)

informação relacionada