Это наиболее распространенное правило (при использовании mod_rewrite - убедитесь, что оно загружено и включено ) - оно гарантирует, что такой файл .php существует перед перезаписью (да немного медленнее, но безопаснее):
Options +FollowSymLinks
RewriteEngine On
# add .php file extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)$ $1.php [L]
В качестве альтернативы просто используйте это:
Options +MultiViews
Это включит «согласование контента». Но у него есть некоторые минусы.
Например: предположим, у вас есть hello.html
& hello.php
в корневой папке вашего сайта. Если вы запрашиваете example.com/hello
, с этой опцией Apache будет искать альтернативные имена (то же имя, но с разными расширениями) и будет обслуживать либо hello.html
, либо hello.php
(я не могу сказать, какое из них будет предпочтительным).
Но если у вас есть только 1 файл с таким уникальным именем (например, hello.php
ТОЛЬКО), то здесь вообще никаких проблем.