Я пытаюсь переписать URL-адреса, используя mod_rewrite
. Это правило перезаписи в моем файле .htaccess:
RewriteRule ^([a-z]+)/?$ $1\.php
Если пользователь введет example.com/contact
, будет загружено содержимое файла example.com/contact.php
.
Проблема в том, что у меня остается дублированный контент, потому что теперь и example.com/contact
, и example.com/contact.php
отображают одну и ту же информацию.
Я хотел бы запретить доступ ко всем файлам PHP, если пользователи пытаются получить доступ через HTTP, но разрешают доступ к сценарию (мне нужно, чтобы мое приложение работало). Как я могу сделать это с помощью .htaccess?
Все, что я пробовал, блокирует как скрипт, так и HTTP-доступ. Например, использование следующего в .htaccess запрещает доступ по HTTP, но также приводит к тому, что мой скрипт перестает работать:
Deny from all
THE_REQUEST
позволяет вам избежать сопоставления внутренних перезаписей с сервера (вот почему у вас был цикл). Я также добавил строку, описывающую каждое правило 15.05.2015example.com/index.php
перенаправлялся наexample.com/index
. Это, вероятно, полезно только для моей собственной настройки, но для обеспечения перенаправленияindex.php
иindex
наexample.com
я добавил следующее после вашего последнего правила перезаписи:RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index RewriteRule ^index\.php$ / [L,R=301]
- Еще раз спасибо! 15.05.2015