Вот что должно работать:
# if the URL doesn't end with "php":
RewriteCond %{REQUEST_URI} !(.+)\.php$
# then whatever it is, add php at the end:
RewriteRule (.+) $1.php [NC]
Ваши ошибки:
- директива R = принудительное перенаправление = оно перенаправит браузер клиента на новый, и клиент увидит это (URL, и я полагаю, это не то, что вы хотите сделать)
-
^
и .
бесполезны и (возможно) приводят к ошибкам.
Если это не сработает, возможно, это очень близко к тому, что вы хотите.
Два совета:
Пожалуйста, попробуйте использовать директиву RewriteLog
: она поможет вам отследить такие проблемы:
# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On
Мой любимый инструмент для проверки регулярных выражений:
http://www.quanetic.com/Regex (не забудьте выбрать ereg (POSIX) вместо preg (PCRE)!)