apache пароль защищает определенный URL - PullRequest
1 голос
/ 25 ноября 2011

Мне нужно защитить паролем определенный URL, например, любой может получить доступ к index.php, но как только они добавят параметры или переменные «GET», я должен требовать valid-user.

index.php ->sweet

index.php? prev = 1 -> требуется действительный пользователь

Ответы [ 2 ]

2 голосов
/ 26 ноября 2011

Интересный вопрос.

Вот решение:

<Location /fakeindex.php>
  Order Deny,Allow
  Deny from All
  Allow from env=REDIRECT_STATUS
  AuthType Basic
  AuthUserFile /pathto/htpasswd/file/passwords.secret
  AuthName This is an example auth
  Require valid-user
</Location>
<Directory /path/to/doc/root>
    Order allow,deny
    allow from all
    RewriteEngine On
    RewriteCond %{QUERY_STRING} .
    RewriteCond %{REQUEST_URI} index.php
    RewriteRule .* fakeindex.php [L,QSA]
</Directory>

Эта часть:

  Order Deny,Allow
  Deny from All
  Allow from env=REDIRECT_STATUS

предназначена для предотвращения прямого доступа к /fakeindex.php (но на самом деле, кто хотел бы обеспечить прямой доступ к охраняемой зоне).Это опционально.

Ключевым моментом является то, что эти условия условия обнаруживают непустую строку запроса и запрос к index.php:

    RewriteCond %{QUERY_STRING} .
    RewriteCond %{REQUEST_URI} index.php

И это, если они соответствуют правилу:

RewriteRule .* fakeindex.php [L,QSA]

Внутренне перенаправить запрос в /fakeindex.php, сохранив строку запроса с QSA.После этого применяется местоположение и выполняется аутентификация на месте.

0 голосов
/ 25 ноября 2011

Вы можете использовать метод isset () в переменной get, например:

if (isset($_GET['prev'])) {
//load password input form
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...