Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > htaccess для админки


Автор: maneken 27.9.2007, 15:14
Доброго времени суток

Я делаю админку для сайта и использую mod_rewrite. Ошибка заключается в том, что не проходят переменные или проходят, но дописывают к значению переменной ".php"(т.е.  значение 1-ой переменной меняется на "значение.php"). Подскажите пожалуйста в чем ошибка и как правильно сделать

Вот мой htaccess файл:
=================
AuthType Basic
AuthName "admin"
AuthUserFile "/home/.htpasswds/admin/passwd"
require valid-user

RewriteEngine On
RewriteRule ^admin/(.+)/(.+)/?$ admin/index.php?переменная1=$1&переменная2=$2&переменная3=$3
RewriteRule ^admin/(.+)/?$ admin/index.php?переменная1=$1&переменная2=$2
RewriteRule ^admin/?$ admin/index.php?переменная1=$1

Раположение папок:
===============
папка админки находится в корне сайта ( admin/ )

На адрес admin/  проиходит вход в админку


Автор: ewolf 28.9.2007, 01:20
Во-первых, число переменных $n не соотвествует числу подмасок.
Во-вторых, например правило

RewriteRule ^admin/(.+)/?$ admin/index.php?переменная1=$1&переменная2=$2

приведет к тому, что запрос admin/file.php будет распознан как верный и первая переменная примет значение file.php

В-третьих, обрати внимание, что процесс обработки правил выполняется итеративно, поэтому, пройдя первый цикл и преобразовав урл admin/... в admin/index.php?... процесс проверки запустится еще раз. Попробуй добавить в конец каждого правила флаг [L].

Автор: maneken 28.9.2007, 10:36
я не дописал подмаски только в форуме...
а почему запрос admin/file.php   будет верным ? (как исправить?)
почему цепляется за файлы, когда передаются переменные?


Автор: ewolf 28.9.2007, 20:08
Вот такой кусок регулярного выражения
(.+)/?
соотвествует любым строкам
a
a/
a.ext
a.ext/
и т.д.
напиши так
([a-z0-9]+)/?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)