mod_rewrite etc.

Ответить
Аватара пользователя
E-mail

Re: mod_rewrite etc.

Сообщение E-mail »

Sham

Всё здовово! Разобрался, спасибо за помощь Изображение
Аватара пользователя
E-mail

Re: mod_rewrite etc.

Сообщение E-mail »

Sham а как можно с помощью rewrite поймать урл
http://mysite.ru/
. или
http://mysite.ru/?
и перенаправить на
http://mysite.ru/404.html
??



а то при набирании этих урлов я попадаю на индексный файл, а надо на 404.html..



т.е. как отловить точку и знак вопроса?
Аватара пользователя
Sham

Re: mod_rewrite etc.

Сообщение Sham »

Код:

Код: Выделить всё

RewriteCond %{THE_REQUEST} [\?\.]$
RewriteRule .* 404.html [L]
Аватара пользователя
Sham

Re: mod_rewrite etc.

Сообщение Sham »

Sham такой код не работает(





Код:

Код: Выделить всё

DirectoryIndex index.html
RewriteEngine On
RewriteCond %{THE_REQUEST} [\?\.]$
RewriteRule .* 404.html [R]

при запросе
http://site.ru/?




отдается:



PHP код:

Код: Выделить всё

GET /? HTTP/1.1

Accept: image/gif

Accept-Language: ru

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

Host: forum.myhtml.ru

Connection: Keep-Alive



HTTP/1.1 403 Forbidden

Date: Sun, 25 Feb 2007 10:49:54 GMT

Server: Apache/1.3.37 (Unix)

Connection: close

Transfer-Encoding: chunked

Content-Type: text/html; charset=iso-8859-1 






и при запросе при запросе
http://site.ru/
.



отдается:



PHP код:

Код: Выделить всё

GET /. HTTP/1.1

Accept: image/gif

Accept-Language: ru

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

Host: forum.myhtml.ru

Connection: Keep-Alive



HTTP/1.1 403 Forbidden

Date: Sun, 25 Feb 2007 10:52:44 GMT

Server: Apache/1.3.37 (Unix)

Connection: close

Transfer-Encoding: chunked

Content-Type: text/html; charset=iso-8859-1 






файла 404.html не существует, но даже если создать заголовки отдаются теже, т.е. - не работает
Аватара пользователя
E-mail

Re: mod_rewrite etc.

Сообщение E-mail »

E-mail
Цитата:



RewriteRule .* 404.html [R]



полный URL надо писать, коли R ставишь...

у меня там помарочка Изображение Правильно так:

Код:

Код: Выделить всё

RewriteEngine On
RewriteCond %{THE_REQUEST} /[\?\.]\ .
RewriteRule .* 404.html? [L]
Аватара пользователя
Sham

Re: mod_rewrite etc.

Сообщение Sham »

Sham
Цитата:



полный URL надо писать, коли R ставишь...



ничего подобного, зависит от того что реврайте как база стоит. урл достаточно относительным этой базы писать, плюс ко всему надо не забывать экранировать спец символы, вот так например:



Код:

Код: Выделить всё

RewriteEngine On
RewriteCond %{THE_REQUEST} \/[\?\.]\ .
RewriteRule .* \/404\.html\? [R]

только честн говоря я не понял как работает кусок после закрывающейся квадратной скобки? о_О

и еще, почему если изменить %{THE_REQUEST} на %{REQUEST_URI} работает по разному?
Аватара пользователя
Siava one

Re: mod_rewrite etc.

Сообщение Siava one »

Sham

1. Субдоменов нет, но наверно апач у меня сконфигурирован так, что с любым субдоменом заходит на один и тот же сайт.

2. Так какое своё правило? У меня его нет, вот и спрашиваю как оно должно выглядеть? Изображение





P.S.

С п.1 разобрался Изображение



Код:

Код: Выделить всё

RewriteCond %{HTTP_HOST}  ^(.*).siava.ru$ [NC]
RewriteRule (.*) http://siava.ru/$1 [R=permanent,L]

п.2 пока под вопросом.
Аватара пользователя
Sham

Re: mod_rewrite etc.

Сообщение Sham »

Siava one



1. дело хозяйское... но доп. инфа бы не помешала...



Код:

Код: Выделить всё

RewriteCond %{THE_REQUEST} ^.+\.сайт\.ru.*$ [NC]
RewriteRule ^(.*)$ http://сайт.ru/$1 [R,L]

2. Пробуй этот вариантик (с учетом того, что у тебя было - лишнего много imho)



Код:

Код: Выделить всё

RewriteCond %{QUERY_STRING} ^[^\=]+\=(https?|ftp).* [NC]
RewriteCond %{REQUEST_FILENAME} !^go\.php [NC]
RewriteRule .* - [F]
Аватара пользователя
Siava one

Re: mod_rewrite etc.

Сообщение Siava one »

Sham

Спасибо Изображение разобрался кажется, сначала не заработало, а потом нашёл ошибку свою Изображение



P.S.

Хотя.. при использовании остальных строчек это условие перестаёт работать. То есть допускает использование ?url=... с любыми другими файлами.

Вот мои извращения:





Код:

Код: Выделить всё

RewriteCond %{QUERY_STRING} ^[^\=]+\=(https?|ftp).* [NC]
RewriteCond %{REQUEST_FILENAME} !^forum\/go\/url\.php [NC]
# security settings
RewriteCond %{QUERY_STRING} ^(.*)wget\%20 [OR]
RewriteCond %{QUERY_STRING} ^(.*)fetch\%20 [OR]
RewriteCond %{QUERY_STRING} ^(.*)echr(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)rush=\%65\%63\%68 [OR]
RewriteCond %{QUERY_STRING} ^(.*)rush=echo [OR]
RewriteCond %{QUERY_STRING} ^(.*)esystem(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)passthru(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)\.printf\( [OR]
RewriteCond %{QUERY_STRING} ^(.*)cmd [OR]
RewriteCond %{QUERY_STRING} ^(.*)\%27(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)"(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)\%22(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)`(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)\%60(.*) [OR]
#RewriteCond %{QUERY_STRING} ^(.*)\%25(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)alert\(document(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)union(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)UNION(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)SQL_INJECTION(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)phpbb_root_path=(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)configdir(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)curl(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)lynx(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)w3\%20(.*) [OR]
RewriteCond %{HTTP_COOKIE}% s:(.*):\%22test1\%22\%3b [OR]
RewriteCond %{QUERY_STRING} .*'.* [NC]
RewriteRule ^.* - [F,L]

Наверно уже запутал совсем Изображение попробую объяснить ситуацию.

Файл, для которого разрешены запросы вида file.php?url=
http://site.ru/
.. находится в каталоге /forum/go/url.php

Для всех остальных файлов такие запросы должны возвращать ошибку.
Аватара пользователя
Sham

Re: mod_rewrite etc.

Сообщение Sham »

Siava one

нифигасе списочек... Изображение только я не понял security settings относятся к url=...?

вообще, тебе лучше все в виде одной регулярки оформить... большая получится, но будет производительнее намного... типа RewriteCond %{QUERY_STRING} (wget\%20|fetch\%20|echr|rush\=\%65\%63\%68|и т.д.)

Разберешься короче Изображение



Код:

Код: Выделить всё

RewriteCond %{QUERY_STRING} ^url\=.* [NC]
RewriteCond %{REQUEST_FILENAME} !forum/go/url\.php [NC,OR]
# security settings
# .....
RewriteRule .* - [F]
Ответить

Вернуться в «Вебмастеру»