Показать полную графическую версию : mod_rewrite etc.
Страниц :
1
2
3
4
[
5]
6
7
8
9
10
E-mail где ты их берешь то? :)## .htaccess в каталоге /go
RewriteEngine On
RewriteOptions inherit
RewriteRule ^home\/?$ hotmepage.html p.s. не понял, индекс при чем?
Sham RewriteRule ^(.*)index\.html?(fmfmfkrk)?$ http://site.ru/$1
а как понимать конструкцию: ?()?
RewriteOptions inherit это я так понимаю заставляет обрабатываться первым файл htaccess тот что в корне, а затем тот что в папке go? или я чтото не понимаю в этом мире?:) а зачем он нам? о_О
-mail где ты их берешь то?
да взять то не проблема:) много чего надо, тренируюсь, и смотрю кто как решает еще тоже самое:)
Sham не серьездный ответ для серьездного форума:)
Siava one
02-02-2007, 12:01
Снова привет :) и снова вопросы, на этот раз их 2.
1. Как сделать чтобы при любых запросах типа www.сайт.ru, www.bla-bla-bla.сайт.ru, bla-bla-bla.сайт.ru, 123.qwerty.сайт.ru перенаправляло на http://сайт.ru?
Так будет корректно?
RewriteCond %{HTTP_HOST} ^(.*).сайт.ru$ [NC]
RewriteRule (.*) http://сайт.ru/$1 [R=permanent,L]
2. В .htaccess есть примерно такая блокировка от ссылок вида http://сайт.ru/any_page.php?url=http://сайт2.ru/...
RewriteCond %{QUERY_STRING} ^(.*)=http://(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)=http\%3A\%2F\%2F(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)=ftp://(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)=ftp\%3A\%2F\%2F(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)=https://(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)=https\%3A\%2F\%2F(.*) [NC]
RewriteRule ^.* - [F,L]
А как разрешить такие ссылки для одного файла, например для http://сайт.ru/go.php?url=http://сайт2.ru/...
Спасибо :)
Siava one
1. а энти папки то есть или их нет, а ежели есть, то где? Никто же не знает (я в т.ч.), как у тебя субдомены прописаны... если нет, то редирект в конф. файле надо прописать..., а есть - в кажную папку - htaccess. Огласите весь спск пжалста :)
2. сверху свое правило пропиши (они сверху вниз выполняются)...
Siava one
02-02-2007, 15:25
Sham
1. Субдоменов нет, но наверно апач у меня сконфигурирован так, что с любым субдоменом заходит на один и тот же сайт.
2. Так какое своё правило? У меня его нет, вот и спрашиваю как оно должно выглядеть? :)
P.S.
С п.1 разобрался :)
RewriteCond %{HTTP_HOST} ^(.*).siava.ru$ [NC]
RewriteRule (.*) http://siava.ru/$1 [R=permanent,L]
п.2 пока под вопросом.
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
02-02-2007, 23:54
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
Для всех остальных файлов такие запросы должны возвращать ошибку.
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]
Siava one
03-02-2007, 15:31
Sham
Всё здовово! Разобрался, спасибо за помощь :)
Sham а как можно с помощью rewrite поймать урл http://mysite.ru/. или http://mysite.ru/? и перенаправить на http://mysite.ru/404.html ??
а то при набирании этих урлов я попадаю на индексный файл, а надо на 404.html..
т.е. как отловить точку и знак вопроса?
RewriteCond %{THE_REQUEST} [\?\.]$
RewriteRule .* 404.html [L]
Sham такой код не работает(
DirectoryIndex index.html
RewriteEngine On
RewriteCond %{THE_REQUEST} [\?\.]$
RewriteRule .* 404.html [R]
при запросе http://site.ru/?
отдается:
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/.
отдается:
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-mailRewriteRule .* 404.html [R]полный URL надо писать, коли R ставишь...
у меня там помарочка :) Правильно так:RewriteEngine On
RewriteCond %{THE_REQUEST} /[\?\.]\ .
RewriteRule .* 404.html? [L]
Shamполный URL надо писать, коли R ставишь... ничего подобного, зависит от того что реврайте как база стоит. урл достаточно относительным этой базы писать, плюс ко всему надо не забывать экранировать спец символы, вот так например:
RewriteEngine On
RewriteCond %{THE_REQUEST} \/[\?\.]\ .
RewriteRule .* \/404\.html\? [R]
только честн говоря я не понял как работает кусок после закрывающейся квадратной скобки? о_О
и еще, почему если изменить %{THE_REQUEST} на %{REQUEST_URI} работает по разному?
а на конце знак вопроса, чтобы при запросе с вопросом, вопрос отрубало?)
а почему так, происходит?:)
E-mailничего подобного, зависит от того что реврайте как база стоит либо абсолютный путь с R, либо полный URL - можно без R
надо не забывать экранировать спец символы ессно :) - там где регулярка, а где замена - afaik только $ и % (символы подстановки)
почему если изменить %{THE_REQUEST} на %{REQUEST_URI} работает по разному?RTFM по значениям переменных
а на конце знак вопросачтобы отрубить query_string
ShamRTFM по значениям переменных вот я и удивляюсь
а как работает кусок после закрывающейся квадратной скобки? о_О?:)
Добрый день, ночь, утро...
глубого извиняюсь если баяню, не хватило терпения все перечитать.
Есть такая проблемма:
RewriteRule ^([a-z0–9]+)(/?)+$ /index.php?path=$1 [NC]
RewriteRule ^([a-z0–9]+)/([^/]*)(/?)+$ /index.php?path=$1&sub=$2 [NC]
такой вариант в принцыпе устраивал, так как в path могут помещатся куча значений в соответствии с шаблоном, так же и с sub. Только есть одно, НО
При таком раскладе обрабатываются и запросы из тела страницы к директориям:
http://site.com/i/
http://site.com/i/pageimg/
http://site.com/css/
http://site.com/js/
и естественно сробатывает подстановка описаная в примере, как можно исключить данные директории, чтобы они не обрабатывались... А то не прикольно получается... :sorry:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.