2017-02-10 2 views
0

Я только что разместил свой первый проект на сайте.Не разрешайте пользователям получать доступ к любой другой веб-странице, чем index.php (через .htaccess)

index.php находится в корневом каталоге . Все остальные (подчиненные) .php страниц находятся в подпапке под названием /pages; HTML страниц находятся в /include; javaScript страниц в /scripts и т. Д.

Я хочу запретить доступ DIRECT (url) к любой субординированной странице моего веб-сайта.

Что я должен добавить в мой файл .htaccess для того, чтобы только index.php или index.html в корневой документ может быть доступен из Интернета через URL, но НЕ любой другой .php или .html страницы ?

Под любой другой страницей я имею в виду страницу, такую ​​как www.mydomain.com/pages/somepage.php.

Я могу создать свой собственный .htaccess на моей корневой странице документа - на самом деле, я уже сделал это для некоторых других целей, поэтому я мог бы обеспечить соблюдение вышеуказанного, добавив в этот файл.

+0

http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#deny – CBroe

+0

@CBroe От Apache: ** Запретить директиву - определяет, каким хостам отказано в доступе к серверу **. Я не хочу запрещать доступ к моему сайту с определенного хоста. Я хочу контролировать, какая страница ПРЯМО доступна в структуре папок ниже моего корня документа через веб-ссылку, а какая нет. – Mikey

+0

Извините, что вы хотели, было неясным, пока вы не прокомментировали ответ Старкина. Да, если вы хотите, чтобы люди посещали вашу индексную страницу _first_, прежде чем они смогут обращаться к другим страницам, вам придется реализовать это через файл cookie или сеанс. – CBroe

ответ

0

Чтобы заблокировать все .php и .html запросов кроме index.html и index.php, поместите следующее правило в верхней части .htaccess:

RewriteEngine on 

RewriteRule ^((?!index\.php|index\html).+\html|php)$ - [F] 

или

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !^/(index\.html|index\.php)$ 
RewriteRule ^.+\.(php|html) - [F] 
+0

Но могу ли я получить доступ к моим другим .php-файлам? – Mikey

+0

@Mikey Это блокирует доступ для всех. – starkeen

+0

Извините, но это не то, что мне нужно. Я хочу, чтобы люди имели доступ ко всем веб-страницам сайта, а не напрямую через URL-адрес 'shorcut'. Возможно, я должен установить переменную $ _SESSION на главной странице ** ** и затем проверить ее на всех остальных страницах. – Mikey