Ru-Board.club
← Вернуться в раздел «Web-программирование»

» mod_rewrite: документация, готовые решения, вопросы

Автор: dacuan
Дата сообщения: 24.11.2010 15:40
bedrik
А если так?

Код: RewriteCond %{REQUEST_URI} !^(cms)
RewriteRule ^(.*)$ /cms/$1 [L]
Автор: gs_design
Дата сообщения: 06.12.2010 09:44
Данные:
1 - FTP сервер (ftp://test:test@192.168.1.1) - лежат данные (рисунки)
2 - HTTP сервер под Apache ((Http://test.com)
3 - Приложение на Java (Java апплет и Оконное приложение) для просмотра данных на фтп.
Необходимо, чтобы на запрос вида
Http://test.com/10/10/image.png
сервер Apache возвращал картинку с адреса:
ftp://test:test@192.168.1.1/10/10/image.png

Простым решением типо:
RewriteEngine on
RewriteRule /~(.+) ftp://test:test@192.168.1.1/$1 [R,L]
не работает, потому что Java не может установить связь с файлом (хотя оно и понятно)

Решение типо почти работает:
RewriteEngine on
RewriteRule /~(.+) ftp://test:test@192.168.1.1/$1 [L,P,QSA]
ФЛАГ P установлен и подключены mod_proxy и mod_proxy_ftp

НО есть проблема, при конекте с браузера 2 минуса:
1 - Браузер выкидывает окно ввода логина и пароля...
2 - Файл возвращается, как текст (т.е. браузер показывает его внутренний код)

От этого Java приложение тоже не работает

Подскажите, как разрулить эту ситуацию?
Автор: mcdemon
Дата сообщения: 15.12.2010 05:17
Подскажите пожалуйсто как настроить апач:
Есть допустим файл 1.html в корне htdocs

Как настроить так, что-бы для определенных подсетей, был редирект на другую страницу?

Есть пару десятков подсетей, и для каждой нужно выдавать разные страницы.
А для всех остальных выдавало 403 ошибку.
Автор: DarkSmoke
Дата сообщения: 09.01.2011 19:49
Добрый день.
Весь мозг поломал с rewrite'ом. Помогите.
Есть ссылки

Код:
<a href="http://site/dnepropetrovsk/">Днепропетровск</a>
<a href="http://site/doneck/">Донецк</a>
Автор: DarkSmoke
Дата сообщения: 10.01.2011 17:38
РЕШЕНО
Надо было прописать полные пути.

P.S. Форум мертвый вообще... .
Автор: spin5
Дата сообщения: 09.02.2011 21:45
Своего случая не нашел, и вообще уже запутался... (с mod_rewrite столкнулся совсем недавно).

Необходимо, чтобы:
- по любой внешней по отношению к mysite.ru ссылке (например, по ссылке в поисковике), указывающей на любой файл, кроме index, пользователь мог перейти только на index;
- при прямом наборе адреса пользователем на любой файл сайта mysite.ru, переход пользователя мог бы быть только на index;
- переход пользователя по внутренней ссылке, указывающей на любой файл, принадлежащий сайту mysite.ru, не вызывал бы редиректа на index;
- НО, необходимо, чтобы поисковики могли видеть и индексировать все страницы и файлы сайта mysite.ru.


(12.02.2011) придумал вот такой алгоритм, надеюсь корректный:

Код: ----------------
IF
     'пользователь'
    AND
     'ссылка не принадлежит mysite.ru'
TO
    'перенаправить на index.htm'
ELSE
    'разрешить все файлы (только для поисковых роботов)'
----------------
Автор: Cheery
Дата сообщения: 14.02.2011 20:43
spin5

Цитата:
можно ли будет после выполнения этого условия поставить условие для запрета mail-ботов?

каким образом? как вы определите, что это он?

Цитата:
переход пользователя по внутренней ссылке, указывающей на любой файл, принадлежащий сайту mysite.ru, не вызывал бы  редиректа на index;

аналогично.. как вы определите, что внутренняя? через реферера? так его боты и подделывает. зачем это вообще нужно?

Цитата:
НО, необходимо, чтобы поисковики могли видеть и индексировать все страницы и файлы сайта mysite.ru.

ну так выдавайте все через index.php, но не указывая переадресации на него.. так, как делает любая CMS
Автор: spin5
Дата сообщения: 14.02.2011 20:58
Cheery, спасибо, что откликнулись.
А как же вот такое выражение, которое в примерах позиционируется, как запрет для mail-ботов:

Код: RewriteCond %{HTTP_USER_AGENT} !^mail.* [NC]
RewriteRule .* - [R=404,L]
Автор: Cheery
Дата сообщения: 14.02.2011 21:14
spin5

Цитата:
А как же вот такое выражение, которое в примерах позиционируется, как запрет для mail-ботов

что такое mail-бот? собирающий email адреса со страниц? какой смысл им себя афишировать?

Цитата:
А эта строка в коде выше разве не дает на выходе определение внешней и внутренней сылки

не дает.. у меня может стоять софт, который вырезает реферера, а боты его как раз всегда имитируют.

Цитата:
только через index не могу, так как сайт полностью на флэш, а в index файле ничего особо для поиска прописать и не могу

вы не совсем поняли.. изучите как работает CMS. index.php получает входные данные и уже в зависимости от них выдает нужный контент
Принципы построения CMS (КМС, Система Управления Сайтом).
Автор: spin5
Дата сообщения: 14.02.2011 21:34
А у меня нет CMS. Весь ресурс состоит только из одного единственного index.php и множества swf файлов (не считая еще одного xls и одного pdf).

Да черт с ними, ботами, главная задача, чтобы по ссылке в поисковике типа http://mysite.ru/0.swf пользователь мог попасть только (не внутренний запрос) на http://mysite.ru. Пусть боты лазают где хотят...

А так как множество флэшей могут ссылаться друг на друга, внутренний запрос не должен редиректиться на index.
Автор: Cheery
Дата сообщения: 14.02.2011 22:18
spin5

Цитата:
Весь ресурс состоит только из одного единственного index.php и множества swf файлов

ну.. выдавайте их через php файл, проверяя куки, которые ставятся только при посещении основной страницы.
Автор: spin5
Дата сообщения: 14.02.2011 22:57

Цитата:
проверяя куки

Так а какие куки проверять, если их еще нет, и получив ссылку на флэшку первый раз юзер не попадает на php?
Автор: Cheery
Дата сообщения: 14.02.2011 23:02
spin5

Цитата:
Так а какие куки проверять, если их еще нет

сами и ставите..

Цитата:
и получив ссылку на флэшку первый раз юзер не попадает на php?

если будете выдавать swf файлы через php, то не будет попадать
Автор: spin5
Дата сообщения: 14.02.2011 23:12
Вот поэтому и стоит задача, чтобы с помощью mod_rewrite направить user-а на php при выдаче ему ссылки типа 'mysite .ru/ 0.swf'. ...а там уже и куки можно...

...в общем, от чего ушли, к тому и пришли!
Автор: Cheery
Дата сообщения: 14.02.2011 23:31
spin5

Цитата:
в общем, от чего ушли, к тому и пришли!

еще раз - нет.

swf.php?file=test

<?php
readfile($_GET['file']."swf");
?>
это как пример.. ессно проверка, чтобы не скачали любой файл и проверка куков..
и проверяйте тогда сколько хотите - есть доступ к файлу или нет.. прямых ссылок не будет

а хотите - сделайте "пустышку" swf, которая, когда указываешь путь в аргументах, подгружает файл в себя
тем самым тоже не будет "прямых" путей.. видно, если смотреть трафик, но так не будет указния в страницах прямого пути к файлам.. и опять, все реализуется через один файл. и не нужно придумывать что то для mod_rewrite, кроме переадресации к основному файлу.
Автор: spin5
Дата сообщения: 15.02.2011 00:56
Так, если я правильно понял:
при любом из запросов я проверяю куки у пользователя - если "моего" нет, то он адресуется к index, а если... ...приплыли...


Цитата:
swf.php?file=test
<?php
readfile($_GET['file']."swf");
?>

...а можно чуть-чуть подробней (в смысле расшифровать)?
дальше сам попытаюсь, главное - направление!
PS. C php совсем недавно начал, можно сказать, "от роду неделя" ))
Автор: Cheery
Дата сообщения: 15.02.2011 01:07
spin5
так, эти разговоры к mod_rewrite уже не имеют никакого отношения
возвращайтесь сюда
Перенаправление на домашнюю страницу... (помогите, плз)

Цитата:
а можно чуть-чуть подробней (в смысле расшифровать)?
дальше сам попытаюсь, главное - направление!

читаем описание функции www.php.net/readfile
Автор: dasksting
Дата сообщения: 18.02.2011 14:40
Добрый день уважаемые, бился сегодня над несколькими задачами, половину решил, половину так и не осилил, пол дня бьюсь и не могу разобраться почему не работает, надеюсь вы мне поможете. Объясняю всю суть проблемы :

1. Есть сайт http://site.ru
2. На сайте есть форма поиска такого вида :


Код:
<form action="http://site.ru/search/" method="get">
<input type="text" name="global" />
<input class="button" type="submit" value="Поиск" />
</form>
Автор: Cheery
Дата сообщения: 18.02.2011 18:53
dasksting
а при чем тут mod_rewrite в отношении формы? браузер знает как формировать строку запроса в соотвествии со стандартами. Если вам нужно формировать так, как вам хочется, то нужно использовать javascript
например так
<form action="http://site.ru/search/" method="get">
<input type="text" name="global" />
<input class="button" type="submit" value="Поиск" onclick='submit_form(this);return false;' />
</form>
<script>
function submit_form(obj)
{
var frm=get_form(obj);
window.location.href=frm.action+obj.previousSibling.value; // тут, на самом деле, надо делать обработку данных, чтобы соответсвовали стандартам URL
}
function get_form( element )
{
while( element )
{
element = element.parentNode
if( element.tagName.toLowerCase() == "form" )
{
//alert( element ) //debug/test
return element
}
}
return 0; //error: no form found in ancestors
}
</script>
обсуждение этого лучше не делать в данной теме.
Автор: dasksting
Дата сообщения: 18.02.2011 19:21
да я вот и думал что модревратером обойдусь без явы, не люблю я яву (иногда применяю, но лишь для редиректа и т.п.) потому что не понимаю ее совершенно либо просто не хочу понимать... ну а вообще возможно такое замутить с помощью реврайтера ????? если нет то придется яву использовать, просто хотелось усложнить жизнь хацкерам а когда они видят передачу параметров в ГЕТ сразу идет подстановка кавычек и т.п. Даже банальный сканер на уязвимости нагружает сервер имеено подбором когда видит такие ссылки, Спасибо за ответ, ждал и жду идей уже весь вечер! ВИП инвайт вам пришлю личным сообщением..

Может у кого еще идеи есть ?
Автор: Cheery
Дата сообщения: 18.02.2011 20:14
dasksting

Цитата:
ну а вообще возможно такое замутить с помощью реврайтера

я еще раз говорю - mod_rewrite не влияет на формирование строки запроса браузером!!!!
он работает только на преобразование полученных данных в другой вид.
Автор: www777 777
Дата сообщения: 04.03.2011 12:43
Просмотрел весь форум. Прочитал примеры. Попробовал различные варианты. Не получается...
Либо это очень просто, либо не возможно.
К сайту привязаны два домена dom1 dom2 Надо перенаправлять запросы в свои папки fld1 fld2
Из прочитанного наваял следующее (РАБОТАЕТ НЕ ПРАВИЛЬНО):



RewriteEngine On
RewriteBase /

RewriteRule ^fld1/ - [L]
RewriteCond %{HTTP_HOST} ^dom1\.org$
RewriteCond %{DOCUMENT_ROOT}/fld1%{REQUEST_URI} -d
RewriteRule [^/]$ %{REQUEST_URI}/ [R,L]
RewriteCond %{HTTP_HOST} ^dom1\.org$
RewriteRule (.*) fld1/$1 [L,QSA]

RewriteRule ^fld1/ - [L]
RewriteCond %{HTTP_HOST} ^www\.dom1\.org$
RewriteCond %{DOCUMENT_ROOT}/fld1%{REQUEST_URI} -d
RewriteRule [^/]$ %{REQUEST_URI}/ [R,L]
RewriteCond %{HTTP_HOST} ^www\.dom1\.org$
RewriteRule (.*) fld1/$1 [L,QSA]

Для dom2 аналогично



Действительно index.php открывается каждым доменом - свой. Это правильно.
Но все ссылки к ресурсам каждого сайта необходимо писать относительно корня.
Вместо http //dom1.org/resurs.htm надо писать http //dom1.org/fld1/resurs.htm
Вместо http //dom2.org/resurs.htm надо писать http //dom2.org/fld2/resurs.htm
Это не правильно.
Где ошибка?
Автор: mcdemon
Дата сообщения: 07.03.2011 03:18
Подскажите пожалуйсто как настроить апач:
Есть допустим файл vt.bat в корне htdocs

Как настроить так, что-бы для определенных подсетей, был редирект на другой файл?

Есть пару десятков подсетей, и для каждой нужно выдавать разные батники (в батниках сетевые маршруты, если кому интерестно )
А для всех остальных выдавало 403 ошибку. (не обязательно)
Автор: Cheery
Дата сообщения: 07.03.2011 07:20
mcdemon
повторюсь о том, что высказал в ПМ - в вашем случае проще всего реализовать все php скриптом, к примеру.
не нужно перекидывать на разные bat файлы - можно просто динамически выдавать нужную информацию, считывая ее, хотя бы, из тех же bat (необязательно, можно и просто тестовых) файлов на сервере
Автор: mcdemon
Дата сообщения: 07.03.2011 09:06
Моглибы вы предоставить мне такой скрипт?
Автор: Tstf
Дата сообщения: 07.03.2011 13:04
Есть в строке браузера такая ссылка


Код:
[more=Ссылка в браузере]
http://test1.ru/goods/mobile/1/1/norm/all/?price_from=&price_to=&filter1=&filter40=&filter4=&filter110=&filter97=&filter65=&filter5=&filter66=&filter95=&filter83=&filter83to=&filter6=&filter85=&filter67=&filter7=&filter105=&filter109=&filter90=&filter12=&filter96=&filter89=&filter93=&filter93to=&do=goods&id_s=mobile&st=1&page=1&view=norm&show=all&search_goods=1
[/more]
Автор: Cheery
Дата сообщения: 07.03.2011 22:49
mcdemon

Цитата:
Моглибы вы предоставить мне такой скрипт?

не для данной темы он
я открыл вашу старую тему и переименовал ее ближе к смыслу
Выдача разной информации для разных диапазонов IP адресов
Автор: DarkSmoke
Дата сообщения: 26.03.2011 13:29
Добрый день

Есть сайт, на нем две ссылки Главная(index.php) и Каталог(catalog.php).

Код ссылок выглядит так:

Код: <a href="http://mydomen/">Главная</a>
<a href="http://mydomen/catalog/">Каталог</a>
Автор: DarkSmoke
Дата сообщения: 27.03.2011 14:26
Т.е. сложность для меня заключается в том что если это корень перенаправлять на index.php, если это /catalog/ перенаправлять на catalog.php, если это /news/ перенаправлять на news.php
Автор: ShafMAN
Дата сообщения: 03.04.2011 12:21
Имею такую запись.

Код:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php [L]

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

Предыдущая тема: PHP: Регулярные выражения (RegExp, Regular, eregi, preg)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.