Регистрация
Вход через соцсети
Восстановление пароля

Вопрос по mod-rewrite (ЧПУ)

Новый топик
22.05.2013, 10:46
Ответить | Цитировать
Balu
Котлевец Владислав

Зарегистрирован:
2009-03-12
Сообщений: 14

Добрый день!

Пытаюсь преобразовать динамические адреса в статические.
Т.е. URL вида site.ru/?var=1 получить site.ru/bingo

Для этого в .htaccess прописываю

Код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^bingo$ /netcat/require/e404.php?REQUEST_URI=/?var=1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ /netcat/require/e404.php?REQUEST_URI=$1 [L,QSA]



Такой код не работает.

Если же делаю обычную переадресацию на страницу, сформированную средствами NetCat, то код срабатывает.

Пример -

Код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^article$ /netcat/require/e404.php?REQUEST_URI=/articles/ [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ /netcat/require/e404.php?REQUEST_URI=$1 [L,QSA]



Подскажите, пожалуйста, что именно я делаю не так?

ebugen
22.05.2013, 22:12
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

Мне кажется, что причина в этом:
Код:
RewriteRule ^bingo$ /netcat/require/e404.php?REQUEST_URI=/?var=1  [L,QSA]

Ведь у вас получается два знака "?" в URL, что недопустимо.
Скорее всего надо сделать так:
Код:
RewriteRule ^bingo$ /netcat/require/e404.php?REQUEST_URI=/&var=1  [L,QSA]


22.05.2013, 23:34
Ответить | Цитировать
Balu
Котлевец Владислав

Зарегистрирован:
2009-03-12
Сообщений: 14

Нет, так тоже не работает...

ebugen
23.05.2013, 11:32
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

еще можно попробовать не & а просто &
А какой командой вы проверяете значение передаваемой переменной?
И где проверяете - в компоненте или в макете дизайна?
Попробуйте делать проверку значения переменной и тут, и там.

23.05.2013, 11:36
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

Вот здесь еще хорошие рекомендации по настройке htaccess для неткат есть: ссылка
В том числе как убирать .html расширение у некоторых типов ссылок. улыбка

24.05.2013, 09:52
Ответить | Цитировать
Balu
Котлевец Владислав

Зарегистрирован:
2009-03-12
Сообщений: 14

Да я, собственно, отсюда и брал примеры. Не работает нифига. И, кстати, у него в примере два знака вопроса передаются в запрос, а все говорят, что так нельзя...

ebugen
24.05.2013, 10:05
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

Да, действительно.
Кстати, а как все-таки вы проверяете значение передаваемой переменной, и где(в компоненте или в макете дизайна)?
Я сталкивался иногда с тем, что переменная $_GET['var'] была нормально присвоена, а $var - нет.

27.05.2013, 22:06
Ответить | Цитировать
Balu
Котлевец Владислав

Зарегистрирован:
2009-03-12
Сообщений: 14

Цитата:
Да, действительно.
Кстати, а как все-таки вы проверяете значение передаваемой переменной, и где(в компоненте или в макете дизайна)?
Я сталкивался иногда с тем, что переменная $_GET['var'] была нормально присвоена, а $var - нет.

Проверка идет в компоненте, в системных настройках.

ebugen
29.05.2013, 07:33
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

А как переменную проверяете, в массиве $_GET или обычным способом? Пробовали другой способ проверки (например, $_GET вместо обычного)?

198 196 2013-05-29 07:33:50 13070
Описание проекта