Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пароль через htaccess, протект урл в зависимости от квери 
V
    Опции темы
brave
Дата 9.10.2012, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.3.2010

Репутация: нет
Всего: нет



Всем привет, пытаюсь закрыть доступ на определенный url, но не работает...

вот сам url: domain.com/index.php?id=12

нужно запротектить все url, которые содержат id=12

Вот что получилось, но выдает 500 ошибку на сервере, mod_rewrite включен, проверял. Обычный протект тоже работает нормально.

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/index\.php$
RewriteCond %{QUERY_STRING} ^id=(12)$
RewriteRule ^(.*)$ /id/%1 [PT]

<LocationMatch "/id/12">
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /home/luxeon/public_html/.htpasswd
Require valid-user
</LocationMatch>

Может кто знает, в чем проблема? 
PM MAIL   Вверх
mark2009
Дата 9.10.2012, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 12.10.2009

Репутация: нет
Всего: 1



RewriteCond %{QUERY_STRING} ^id=12$
Попробуйте вот так. У вас ведь условие:

Код

нужно запротектить все url, которые содержат id=12


т.е. это точно известно, что именно 12. 
PM MAIL WWW ICQ Skype   Вверх
brave
Дата 9.10.2012, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.3.2010

Репутация: нет
Всего: нет



Цитата(mark2009 @ 9.10.2012,  11:24)
RewriteCond %{QUERY_STRING} ^id=12$
Попробуйте вот так. У вас ведь условие:

Код

нужно запротектить все url, которые содержат id=12


т.е. это точно известно, что именно 12.

Да, точно известен номер id.

Пробовал без скобок, всеравно 500 ошибка.
PM MAIL   Вверх
ksnk
Дата 9.10.2012, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 5
Всего: 386



Некоторые глюки понимания можно исправить только отладкой. Для этого, на тестовом хосте нужно указать в конфиге appache в секции своего хоста примерно такое
Код

<VirtualHost ...>
...

RewriteLog "logs/myhost.rewrite.log"
RewriteLogLevel 3
</VirtualHost>

Параметр RewriteLog  содержит имя до лога. Лог довольно быстро заполняется, так что имеет смысл его включать только на тестовом хосте.

А по сути - возможно, QUERY_STRING начинается с символа `?`. Правда почему ошибка 500 - нужно смотреть в логах...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
brave
Дата 9.10.2012, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.3.2010

Репутация: нет
Всего: нет



В логах: <LocationMatch not allowed

Походу на шареде работать не будет...
PM MAIL   Вверх
brave
Дата 9.10.2012, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.3.2010

Репутация: нет
Всего: нет



Хм, попробовал другим способом, 500 ошибки нет, но и не работает тоже

SetEnvIf Host domain.com index.php?id=12
AuthType Basic
AuthName "Staging Server"
AuthUserFile /home/luxeon/public_html/.htpasswd
#AuthGroupFile /home/luxeon/public_html/.htgroup   
Require valid-user
Order allow,deny
Allow from all
Deny from env=index.php?id=12
Satisfy any


PM MAIL   Вверх
brave
Дата 9.10.2012, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.3.2010

Репутация: нет
Всего: нет



Может кто подскажет более простой способ запаролить доступ к url с определенной query, через php или javascript?
PM MAIL   Вверх
ksnk
Дата 9.10.2012, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 5
Всего: 386



Цитата

<LocationMatch> directive CANNOT be used in .htaccess file -- only in server config or virtual host context.

http://httpd.apache.org/docs/current/mod/c...l#locationmatch



http://php.net/manual/en/features.http-auth.php
Можно и на php

Код

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
} else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>



Это сообщение отредактировал(а) ksnk - 9.10.2012, 22:00


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
brave
Дата 10.10.2012, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.3.2010

Репутация: нет
Всего: нет



Цитата(ksnk @ 9.10.2012,  21:58)
Цитата

<LocationMatch> directive CANNOT be used in .htaccess file -- only in server config or virtual host context.

http://httpd.apache.org/docs/current/mod/c...l#locationmatch



http://php.net/manual/en/features.http-auth.php
Можно и на php

Код

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
} else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>

Спасибо, этот код я видел, а вот если надо проверять url и если совпадает с условием(содержит id=12), то запрашивать пароль. Не знаете, как это реализовать?
PM MAIL   Вверх
ksnk
Дата 10.10.2012, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 5
Всего: 386



Цитата(brave @  10.10.2012,  14:56 Найти цитируемый пост)
если совпадает с условием(содержит id=12), то запрашивать пароль

Код

if(12==$_GET['id']){
 // совпадает с условием 

?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
brave
Дата 10.10.2012, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.3.2010

Репутация: нет
Всего: нет



Цитата(ksnk @ 10.10.2012,  15:54)
Цитата(brave @  10.10.2012,  14:56 Найти цитируемый пост)
если совпадает с условием(содержит id=12), то запрашивать пароль

Код

if(12==$_GET['id']){
 // совпадает с условием 

?

Ok, спасибо. Значит, используя $_GET, можно вытянуть значения с query.

Еще вопрос, как можно организовать логику? Есть index.php страница, контент на этой странице отображается в зависимости от query(index.php?id=10, index.php?id=11 и т. д.). Просто index.php и все query с id!=12 должны отображать контент, а query id=12 должна запрашивать пароль и потом в случае успеха, показывать контент id=12. Я так понимаю запрос пароля сделать в отдельном php файле и в исходном index.php файле проверять  значение $_GET на 12. Если удовлетворяет, то редирект на страницу с запросом пароля, а потом обратно? Так вроде редирект луп будет... Как можно это огрганизовать?

Добавлено через 9 минут и 6 секунд
Сделал отдельный файл secure.php, только как передать работу обратно index.php при введении правильного пароля, ведь в index.php опять будет проверяться условие на id=12 и отправлять к secure.php - замкнутый круг и out of memory (делал через include).
PM MAIL   Вверх
brave
Дата 10.10.2012, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 7.3.2010

Репутация: нет
Всего: нет



Отбой, все сделал, все работает.

Спасибо за помощь.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.1070 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.