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

» Apache+mod_rewrite

Автор: GangsteR
Дата сообщения: 21.12.2005 13:01
phpbbmods

RewriteRule ^test/?$ test.php

будет и "test" и "test/"
Автор: phpbbmods
Дата сообщения: 21.12.2005 13:07
GangsteR
гений спасибо огромное!!!
Автор: Old Rocker
Дата сообщения: 25.12.2005 15:38
Ребята, намаялся...

В общем, для понятия принципа. Вообще, возможно просто сделать замену сложной ссылки вручную на ту, что я хочу получить.

/index.php?option=com_content&task=blogsection&id=3&Itemid=41

заменить на

/article/

просто напрямую! никакой автоматики!
Автор: Cheery
Дата сообщения: 25.12.2005 22:39
Old Rocker

Цитата:
/index.php?option=com_content&task=blogsection&id=3&Itemid=41
заменить на
/article/

ты определи вид ссылок, которые нужно заменять..
Автор: Old Rocker
Дата сообщения: 25.12.2005 23:22
Cheery
Нет, вопрос в том, можно ли просто ручками одну корявую ссылочку заменить на другую.
Т.е. записать в хтаксес...
Автор: Cheery
Дата сообщения: 25.12.2005 23:24
Old Rocker

Цитата:
Нет, вопрос в том, можно ли просто ручками одну корявую ссылочку заменить на другую.

можно.. я тебя еще раз спрашиваю.. меняются ли параметры? или просто вот эта одна ссылка?
Автор: Old Rocker
Дата сообщения: 25.12.2005 23:37
Cheery
На данном этапе только одна эта ссылка ( /index.php?option=com_content&task=blogsection&id=3&Itemid=41 ).

Второй этап, это преобразование уже динамической части, т.е. в вид

из /index.php?option=com_content&task=blogsection&id=3&Itemid=41

в автоматом /content/blogsection/3/41/
Автор: Cheery
Дата сообщения: 25.12.2005 23:43
Old Rocker
что то такое
RewriteCond %{QUERY_STRING} option=com_content&task=blogsection&id=3&Itemid=41
RewriteRule ^/index.php /article/

не проверял.. если порядок другой - может не сработать
речь о Мамбо? тогда зачем так извращаться?

Цитата:
из /index.php?option=com_content&task=blogsection&id=3&Itemid=41

в автоматом /content/blogsection/3/41/

Автор: Old Rocker
Дата сообщения: 26.12.2005 00:00

Цитата:
не проверял.. если порядок другой - может не сработать
речь о Мамбо? тогда зачем так извращаться?


Нет, скорее путь к тому, чтоб разобраться.
А для этого очень помогают готовые модули.
Мамбо здесь невинная жертва.

В любом случае, вывод скрипта будет структурно такой же.
index.php?option=1&section=2&id=123 (как пример)
но логичнее посетителю и поисковым паукам представить все в виде:
/news/last_news/123/

Вот думу думаю, как подобную конструкцию лучше реализовать.

Спасибо за подсказку!
Автор: azol
Дата сообщения: 14.01.2006 02:17
Подниму старую темку

Народ, помогите, пожалуйста с таким вопросом...

Дано: директория запароленная при помощи .htpasswd
Задача: запретить использование такой конструкции "http://login:pass@blablabla.ru/blabla/file.rar"

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

Если такое возможно реализовать, то не перекроет ли это доступ полностью, скажем, для менеджеров закачки в которых тоже нужно указывать эти логин и пароль?..

Пробовал использовать вот это:
RewriteEngine On
RewriteRule ^(.*)@(.*)$ http://blablabla.ru/blalba/ [R]

Но нифига не работает, хотя синтаксически все вроде бы тип-топ.
Есть подозрение, что апатчу на обработку приходит url уже без секции "log:pas@"
Или может он каким-то образом вырезает это перед проверкой...

Помогите, пожалуйста! Стоит ли заморачиваться с этой штукой или уже проще поставить глобальный антилич (а не хотелось бы)...
Автор: Cheery
Дата сообщения: 14.01.2006 02:19
azol

Цитата:
Задача: запретить использование такой конструкции "http://login:pass@blablabla.ru/blabla/file.rar"

никак.. этим занимается браузер (после SP2 такое не работает в IE)

Цитата:
Есть подозрение, что апатчу на обработку приходит url уже без секции "log:pas@"

именно..
браузер получает 401 и отдает то, что перед @ в правильном виде
Автор: azol
Дата сообщения: 14.01.2006 02:25
Cheery
Спасибо за оперативный ответ!
Эх, прийдется искать хороший антилич... =)
Автор: Cheery
Дата сообщения: 14.01.2006 02:51
azol
Защита ссылок (антилич/antileech/anti-leech/link protection)
Автор: a7777
Дата сообщения: 14.01.2006 10:59
Народ, помогите, совсем уже мозги варить отказываются.. .

Хочу ссылку вида http://soft.com/index.php?action=showpodrobnee&id=1
изменить на http://soft.com/podrobnee/1.html
Подскажите плз, правильно ли я составил:

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)podrobnee/([0-9]+)\.html$ $1index.php?action=showpodrobnee&id=$2

Перепробывал несколько вариантов, не хочет работать mod_rewrite Хочу быть уверенным, что правило составленно верно и дальше ковырять апач... Апач версии 2.0.55, если это имеет какое-то значение.

Пробовал так же для теста правило RewriteRule ^/test.html(.*) /index.php$1 - тоже не срабатывает Такое впечатление что модуль совсем не работает, хотя в конфине апача я его влючил и сам файл существует!
Автор: Cheery
Дата сообщения: 14.01.2006 22:10

Цитата:
Перепробывал несколько вариантов, не хочет работать mod_rewrite Хочу быть уверенным, что правило составленно верно и дальше ковырять апач... Апач версии 2.0.55, если это имеет какое-то значение.

включи логи обработки rewrite и увидишь, в чем твоя ошибка.
RewriteRule ^/podrobnee/([0-9]+)\.html$ /index.php?action=showpodrobnee&id=$1
Автор: a7777
Дата сообщения: 15.01.2006 14:23
с этим уже разобрался и почти все ссылки сделал как нада, с одной пока затык, щас разбираюсь Мож подскажете как правильно ее такую победить?

index.php?pip=10&page=1 чтоб откликалась на /10/1.html

10 и 1 могут принемать разные значения
Автор: Cheery
Дата сообщения: 16.01.2006 05:03
RewriteRule ^/([0-9]+)/([0-9]+)\.html$ /index.php?pip=$1&page=$2
Автор: Dr_Spectre
Дата сообщения: 20.01.2006 13:28
Просьба помочь с такой проблемой.
есть путь site/cgi-bin/dir
хотелось бы свести его к site/dir.
Как это сделать с помощью mod_rewrite?
(понимаю что вопрос простой но чтото с ходу я в модреврайт не въехал а доку читать и экспериментить пока нет времени).
ЗЫ симлинк не подходит ))
Автор: Cheery
Дата сообщения: 20.01.2006 19:47

Цитата:
Как это сделать с помощью mod_rewrite?

RewriteRule ^/dir/(.*)$ /cgi-bin/dir/$1
Автор: Cacka
Дата сообщения: 07.02.2006 13:42
гм...может и мне поможете...
Линк который сейчас :
http://host/game/?id=123
какой хочу :
http://host/game/123.html

я делал вот так :

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^/game/([0-9]+)\.html$ /game/?id=$1

но реакции ноль в чем моя ошибка?
Автор: dacuan
Дата сообщения: 07.02.2006 14:39
Cacka
Попробуй так:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^game/([0-9]+)\.html$ game/?id=$1
Автор: Cacka
Дата сообщения: 07.02.2006 14:44
dacuan
попробовал, эффект тот же - ссылка не преобразовывается
Автор: dacuan
Дата сообщения: 07.02.2006 15:31
Cacka
В настройках хоста добавь две строчки

RewriteLog logs/site.rewrite.log
RewriteLogLevel 9

Перезапусти апача и посмотри, что пишется в файл site.rewrite.log
Автор: Cacka
Дата сообщения: 07.02.2006 16:07
dacuan, у меня нет доступа к запуску апача, и к его конфигу. А RewriteLog, насколько я знаю, в .htaccess не работает.
Автор: dacuan
Дата сообщения: 07.02.2006 16:24
Cacka
1) Скрипт лежит в корне веб-сервера или в /game ?

2) Что ты подразумеваешь под
Цитата:
но реакции ноль


Что происходит при попытки открыть http://host/game/123.html ?

3) Ты уверен, что отрабатывает именно этот скрипт? Попробуй совершить ошибку в настройках и посмотреть выведется ли Error 500
Автор: Cacka
Дата сообщения: 07.02.2006 22:40
dacuan, извиняюсь, Ваш вариант прокатил У меня не получалось только из-за собственных глюков.
Автор: Jan MOSAD
Дата сообщения: 04.03.2006 17:34
Есть ОСь с FreeBSD 4.10+PHP 5+Apache 2.2.
Апач собирал с:
./configure
--prefix=/usr/local/apache2
--enable-so
--enable-ssl
--with-ssl=/usr/local/ssl/bin
--enable-module=shared
--enable-module=rewrite
--enable-rewrite=shared
PHP пишет, что данный мод есть:
Loaded Modules: mod_rewrite mod_php5
.htaccess есть перезапись:
<IfModule mod_rewrite.c>
RewriteEngine on

RewriteBase /

# Rewrite current-style URLs of the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
Но - не работает перекодировка скажем
?q=admin в /admin
Где грабли??? Уже из-под портов ставил - всё то же (( Проблема осталась и ОЧЕНЬ КРИТИЧНА для меня.
Автор: Cheery
Дата сообщения: 04.03.2006 23:09
Jan MOSAD

Цитата:
Где грабли???

включаем логирование обработки в mod_rewrite и смотрим.
то, что у тебя написано, должно переделывать /admin в ?q=admin, а не то, что ты написал выше.
плюс убери <IfModule mod_rewrite.c> и закрытие и посмотри - выдаст ли ошибку..
варианты - не грузится модуль.. или не разрешено изменение FileInfo для данной папки через Allowoverride в httpd.conf
Автор: Jan MOSAD
Дата сообщения: 06.03.2006 11:30
10х всем - проблема найдена:
Allowoverride в httpd.conf стоял в None, изменил в All - всё заработало.
Автор: Cacka
Дата сообщения: 06.03.2006 14:25
скажите, а можно с помощью mod_rewrite сделать, чтобы все русские символы в URL менялись на английские?
Т.е. А = A, Б = B, Ж = Zh и т.п.

Страницы: 1234567891011

Предыдущая тема: Защита от атак: выбор фаервола и антивируса для сисадмина


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