Помогите с mod_rewrite

1 234
[umka]
На сайте с 25.05.2008
Offline
456
#21
bearman:
RewriteCond %{QUERY_STRING} "id=[0-9]+"
RewriteRule .* path_to_offcourse_404_error_kha_kha_kha.html [L]

Дык оное загубит реврайт с '/23/' на '?id=23'

bearman:
о боже .. не пугайте людей криптографией

сорри, стараюсь как могу :o

Лог в помощь!
Лунный Кот
На сайте с 27.01.2006
Offline
222
#22

А вообще да, не супербизон (( губит те конструкции, где есть ?id

В итоге все равно надо отдать в скрипт ?id=23, но юзер должен приходить к этому только через /23/

Вы мне свои достижения жизненные продемонстируйте, пожалуйста, я, возможно, возьму свои слова обратно и извинюсь прилюдно. Только думается мне, что вы банальный лась. (с) Mirson
[Удален]
#23
[umka:
]Дык оное загубит реврайт с '/23/' на '?id=23'

проверьте, если загубит, то поправим еще одной строчкой ;)

bearman добавил 08.03.2010 в 01:31

Лунный Кот, не ссыте, не ссыте, не ссыте =)

[umka]
На сайте с 25.05.2008
Offline
456
#24
Лунный Кот:
А вообще да, не супербизон (( губит те конструкции, где есть ?id
В итоге все равно надо отдать в скрипт ?id=23, но юзер должен приходить к этому только через /23/

bearman,

Хаааа-хааааа! 😂

Не, ну тут явно единственное возможное решение через, кхм, %{THE_REQUEST}

И у меня оно даже работает.

Только не понятно, почему у вас хандрит.

Вот живой пример :)

http://nop.ru/123/

http://nop.ru/?id=123

.htaccess


RewriteEngine On
RewriteCond %{THE_REQUEST} "GET /\?id=[0-9]+"
RewriteRule . - [F]
RewriteRule ([0-9]+)/ test.php?id=$1
Лунный Кот
На сайте с 27.01.2006
Offline
222
#25

[umka], эххх ( завтра продолжим :) спасибо за помощь, будем дальше думать

[umka]
На сайте с 25.05.2008
Offline
456
#26

Таки еще одно решение есть конкретно для данного случая. И без %{THE_REQUEST}, заметьте ))

RewriteEngine On
RewriteCond %{QUERY_STRING} "^id=[0-9]+"
RewriteRule ^$ - [F]
RewriteRule ([0-9]+)/ test.php?id=$1

И запросы вида '/?id=123' отбиваются, и запросы вида '/123/' реврайтятся :)

Вам, естественно, последняя строчка будет не нужна.

[Удален]
#27
[umka:
]RewriteRule ^$ - [F]

не ну это не честно, тут с урлами не поиграешься))

bearman добавил 08.03.2010 в 01:53

а вот чтото такое :)

RewriteEngine On

RewriteCond %{QUERY_STRING} "id=[0-9]+"
RewriteCond %{QUERY_STRING} !nosub
RewriteRule .* path_to_offcourse_error_kha_kha_kha.html [NS,L]

RewriteRule ^(\d+) index.php?id=$1&nosub [L]

можно еще через mod_proxy конечно) проблема в том, что rewrite round'ы не устанавливают переменную IS_SUBREQ, им определенно не хватает еще 1 флажка в документацию))

[umka]
На сайте с 25.05.2008
Offline
456
#28
bearman:
не ну это не честно, тут с урлами не поиграешься))

так я и написал, что для данного конкретного случая )

типа когда только '/?id=123' и всё :)

[Удален]
#29
[umka:
]типа когда только '/?id=123' и всё

уху, мой метод чуток посложнее (надо старые правила поправить, но правка - мелочь), но работает с более интересными случаями)

[umka]
На сайте с 25.05.2008
Offline
456
#30
bearman:
не ну это не честно, тут с урлами не поиграешься))

bearman добавил 08.03.2010 в 01:53
RewriteCond %{QUERY_STRING} !nosub

Для этого же есть %{IS_SUBREQ} :)

тоже вариант.

1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий