Вот совершенно другой ответ:
# Stop if static files:
RewriteRule (.*)(\.(css|js|htc|pdf|jpg|jpeg|gif|png|ico))$ - [NC,QSA,L]
# if it ends by htm or Php, 404:
RewriteRule (.*)(php|htm|html)$ - [L,R=404]
# if, when adding ".htm" it's a file...
RewriteCond %{SCRIPT_FILENAME}.htm -f
# Rewrite it (and end processing):
RewriteRule (.*) $1.htm - [L,R=404]
# Same principles with "html" then php:
RewriteCond %{SCRIPT_FILENAME}.html -f
RewriteRule (.*) $1.html - [L,R=404]
RewriteCond %{SCRIPT_FILENAME}.php -f
RewriteRule (.*) $1.php - [L,R=404]
# everything else = 404:
RewriteRule . - [L,R=404]
Два совета:
Пожалуйста, попробуйте использовать директиву 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)!)
Могу ли я попросить вас добавить переписанный журнал в ваш вопрос?