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


Автор: Goliath 18.4.2007, 15:20
Добрый день. Возникла проблема со следующим выражением:RewriteRule ^viewtopic\.php\?t=([0-9] )$ index.php?showtopic=$1 [QSA,L]При обращение на страницу по url viewtopic.php?t=678 выдает 404 ошибку.Если я заменяю наRewriteRule ^viewtopic\.php.t=([0-9] )$ index.php?showtopic=$1 [QSA,L]И захожу по URL viewtopic.php?t=678 ни выдает 404 зато если вместо “?” ставлю любой другой символ правило срабатывает. Подскажите что с знаком вопроса не так?

Автор: GZep 18.4.2007, 15:34
попробуйте:
Код

^viewtopic\.php\?t=([0-9]+)$ index.php?showtopic=$1 [QSA,L]

Автор: Goliath 18.4.2007, 15:53
Не работает все равно :(

Автор: GZep 18.4.2007, 16:28
а вот так
Код

^viewtopic\.php\?t=([0-9]+)$ index.php?showtopic=$1 [NC,QSA,L]

Автор: Goliath 18.4.2007, 17:01
нет не работает
Код

RewriteEngine on
Options +FollowSymlinks


RewriteRule ^.htaccess$ - [F]
#RewriteRule ^viewtopic\.php.t=([0-9]+)$ index.php?showtopic=$1 [QSA]
#RewriteRule ^viewforum\.php.f=([0-9]+)$ index.php?showforum=$1 [QSA]

#RewriteRule ^viewtopic\.php(/?.*)t=([0-9]+)$ index.php?showtopic=$1 [QSA,L]

#RewriteRule  ^condition-show-t=([0-9]+) index.php?showtopic=$1 [L,R]
#RewriteCond  %{QUERY_STRING}  ^t=[0-9]+$
#RewriteRule ^viewtopic\.php$ condition-show-t%{QUERY_STRING} [N]
RewriteRule ^viewtopic\.php\?t=([0-9]+)$ index.php?showtopic=$1 [NC,QSA,L]

Капец :( людям сервак повесил smile .

Автор: GZep 18.4.2007, 21:15
Цитата(Goliath @  18.4.2007,  17:01 Найти цитируемый пост)
Капец :( людям сервак повесил

не растраивайтесь! apache любит мозги потрепать... завтра на свежую голову еще раз внимательно посмотрю на код.

Пока попробуйте дома на денвере (denwer.ru) запустить код вот так:
Код

RewriteEngine on
RewriteRule ^viewtopic\.php\?t=([0-9]+)$ index.php?showtopic=$1 [NC,QSA]


Все остальное пока закомментируйте.

Автор: Goliath 18.4.2007, 22:14
Мир не без добрых людей помогли я просто вставлю цитату в друг кто-то столкнется с такой проблемой:
Цитата

Дело в том, что в правило RewriteRule попадает "очищенный" url, без строки параметров (то, что после символа ?). Для анализа строки параметров нужно использовать директиву RewriteCond. 
Код

RewriteCond %{QUERY_STRING} ^t=([0-9]+)$   
RewriteRule ^viewtopic\.php$ index.php?showtopic=%1 [L]  


http://apachedev.ru/forum/viewtopic.php?id=45

Автор: GZep 19.4.2007, 15:09
Goliath, так вы же и обращались к скрипту с GET параметрами.. или как? почему же тогда не работало?..

Автор: Goliath 19.4.2007, 22:14
Да с GET параметрами. Человек написал что RewriteRule для сверки убирает GET параметры и только после это производит сверку вот такая фигня smile 

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