По умолчанию расширение PHP на веб-сервере - PullRequest
2 голосов
/ 22 сентября 2011

Можно ли записать файл .htaccess, чтобы

http://www.mysite.com/about 

грузы about.php

и то же самое относится к любому файлу?

Я пытался

RewriteEngine On
RewriteRule ^([0-9A-Za-z]+)$ $1.php

но, похоже, это не работает.

1 Ответ

3 голосов
/ 22 сентября 2011

Это наиболее распространенное правило (при использовании 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 ТОЛЬКО), то здесь вообще никаких проблем.

...