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

» Apache+mod_rewrite

Автор: xntx
Дата сообщения: 31.07.2004 19:17
Cheery
в .хтакцесс

Цитата:
Apache/2.0.50 (Win32) PHP/4.3.7 Server at localhost Port 80

кстати, вот щас херню заметил, он выдает 500 только когда запрос попадает под этот паттерн
я решил убрать слешь у адреса на который перенаправляется, тоесть так:

Цитата:
RewriteRule ^(.+)$ user.php?param=$1

он заработал, но не передает парамтер, сделал принт этого параметра из скрипта, показывает $_GET['param'] == user.php



Добавлено
сделал

Цитата:
RewriteRule ^(.+)$ user.php?param=$1[L]

передает в param = user.php[L]

Автор: Cheery
Дата сообщения: 31.07.2004 19:23
xntx

Цитата:
он заработал, но не передает парамтер, сделал принт этого параметра из скрипта, показывает $_GET['param'] == user.php

оно и понятно - делается в цикле..
он перекидывает файл на самого себя.
а не должен делать, так как пред. строка говорит, что не нужно обрабатывать php файлы. Покажи логи rewrite
Автор: natpoit
Дата сообщения: 31.07.2004 19:55
Никто не помог Ну и ладно сама разобралась
htaccess:


Цитата:

IndexIgnore *

RewriteEngine On

RewriteRule ^category(.*).html browse.php?cat=$1

RewriteRule ^detail(.*).html detail.php?id=$1

RewriteRule ^cat_more(.*)-(.*).html browse.php?cat=$1&pg_which=$2

RewriteRule ^search_more(.*)-(.*).html search.php?keyword=$1&opt=0&pg_which=$2

RewriteRule ^gsearch_more(.*)-(.*).html search.php?keyword=$1&image.x=0&image.y=0&opt=2&pg_which=$2

ErrorDocument 404 http://www.bestcatalog.net/404.html









Автор: xntx
Дата сообщения: 31.07.2004 20:16
Cheery
точно входит в цикл, error log говорит:

Цитата:
[Sat Jul 31 18:12:55 2004] [error] [client 127.0.0.1] mod_rewrite: maximum number of internal redirects reached.

угу, зацикливается на строке с проверкой на .php разрешение.
Автор: Cheery
Дата сообщения: 31.07.2004 21:42
xntx

Цитата:
угу, зацикливается на строке с проверкой на .php разрешение.

ты уверен, что написал все так, как я указал? тогда он должен проходить мимо последней строки.
зы: еще есть rewriterule?? можно в самом конфиге запускать их по несколько раз.. правда и тогда не должно влиять..
Автор: Mira
Дата сообщения: 06.08.2004 11:22
люди поскажите что в настрой ках апаче не то.
вообщем проблема в следующем

.htaccess
RewriteEngine on
Options +FollowSymlinks

RewriteRule ^(.*)/$ $1.php
RewriteRule ^.*/(.*)/(.*)(jpg|gif|css)$ $1/$2$3


ввожу
http://localhost/test/

говорит
Not Found
The requested URL /test.html.php was not found on this server.

(это при условии что в папке есть как test.php так и test.html, случайно заметил)
если есть только test.php то говорит
Not Found
The requested URL /test.php.php was not found on this server.

а если test.php вообще в папке нет (то обрабатывает равильно)
говорит
Not Found
The requested URL /test.php was not found on this server.
(но в этом случае его дейсвительно нету на сервере)

с чем это может быть связано.

огромное спасибо.
Автор: Aslan
Дата сообщения: 29.08.2004 01:04
Кто может мне точно ответить. Если у меня есть доступ к htaccess, но модуль mod_rewrite не установлен. Как писал rbt я хочу воспользоваться ErrorDocument 404 /index.php и в зависимости от $PHP_SELF формировать страницы. Вопрос: почему будут проблемы с поисковиками?

Цитата:
ErrorDocument 404 /all.php, где последний и есть обработчик. А теперь представьте себе сколько редиректов будет у сайта. Т.е. у меня по каждой ссылке редирект будет что ли? А как пои сковая машина будет себя в таком случае вести? Не плюнет ли она на все редиректы?

Автор: SafeWay
Дата сообщения: 29.08.2004 04:07
Организовал так:
RewriteEngine on
RewriteRule ^([a-zA-Z0-9]+).ch?(.*)$ index.php?mod=$1&$2
(Из news.ch в index.php?mod=news соответственно.)

Однако прошло не так гладко, как полагалось, а именно:
путь к js, html файлам, тоже преобразовывается, и соответсвенно это влекёт за собой ошибки.

Как убрать этот баг/недоработку.

ПыСы: в других темах это не нашёл.

Добавлено
С картинками всё ок.

пробовал:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/inc/
RewriteRule ^([a-zA-Z0-9]+).ch?(.*)$ index.php?mod=$1&$2

Всё равно файлы из inc/js/ не подключает...
Автор: Cheery
Дата сообщения: 29.08.2004 04:16
SafeWay

Цитата:
Всё равно файлы из inc/js/ не подключает...

запрос только так и выглядит?

Цитата:
Из news.ch

то есть файлы с расширением ch?
или какие угодно, кроме заданного набора?
Автор: SafeWay
Дата сообщения: 29.08.2004 04:28
Cheery
<script language="JavaScript" src="inc/js/bbcode.js"></script>

news.ch - это для примера, просто единственное место, где js файл подключается.
подобная проблема в регистрации, там:
<iframe src="license.html"></iframe> - файл тож не грузиться.
Автор: Cheery
Дата сообщения: 29.08.2004 04:30
SafeWay
ну так понятно почему.. у тебя этот файл в корне?

Цитата:
RewriteCond %{REQUEST_URI} !^/inc/

это показывает, что не применять правило, если файл в дире /inc/ - то есть от корня.
в твоей записи
Цитата:
src="inc/js/bbcode.js">

считается от того места, где лежит файл. Он в корне? Мне кажется, что нет.
Автор: SafeWay
Дата сообщения: 29.08.2004 04:46
Cheery
пробовал:
RewriteCond %{REQUEST_URI} !^inc/
аналогично
Автор: Cheery
Дата сообщения: 29.08.2004 04:53
SafeWay

Цитата:
RewriteCond %{REQUEST_URI} !^inc/
аналогично

почитай мануал..
RewriteCond %{REQUEST_URI} !/inc/
если не сработает, то
RewriteCond %{REQUEST_URI} !inc/
Автор: SafeWay
Дата сообщения: 29.08.2004 04:57
Cheery
да, спасиб
RewriteCond %{REQUEST_URI} !inc/ - супер
Автор: Mira
Дата сообщения: 07.10.2004 15:26
люди , возможно сейчас задам не кореткный вопрос , сам понимаю , что что то не то тут, но все же ...

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

т.е. что бы было понятно
есть папки

folder
.htaccess

так в ней прописано заменять все папки на файлы RewriteRule ^(.*)/$ $1.php [L]
но если у меня дейсвительно обращение идет к папке folder как мне сделать так , что бы небыло проблем. А то при обращении любого скрипта в папке folder (к корневой) оно пытается заменить ее на folder.php

спасибо

Автор: Cheery
Дата сообщения: 07.10.2004 22:44
Mira

Цитата:
но если у меня дейсвительно обращение идет к папке folder как мне сделать так , что бы небыло проблем. А то при обращении любого скрипта в папке folder (к корневой) оно пытается заменить ее на folder.php

мой пост выше.. попробовал бы прочитать.
Автор: Tropin
Дата сообщения: 13.10.2004 08:30
Здравствуйте, хочу обсудить в данной теме безопасность использования mod_rewrite

Цитата:
Если ваш администратор запретил перегрузку конфигурационной директивы FollowSymLinks в пользовательских каталогах, в этом случае вы не сможете использовать механизм преобразований. Это ограничение нужно по соображениям безопасности.

На этот случай имеется другая директива - SymLinksIfOwnerMatch

Цитата:
SymLinksIfOwnerMatch - сервер будет следовать только тем символическим связям, для которых целевой файл или каталог имеют тот же идентификатор пользователя что и связь.


Но вот появляются вопросы:
1. Какая вообще безопасность? что может произойти и чего следует бояться? (особенно, когда директивы используются в папках cgi-скриптов)

2. Как определить какой идентификатор пользователя имеет связь??? (ну про файл, я думаю, понятно :)...

3. Как скажется влияние директивы на производительность?
Автор: nastavnik
Дата сообщения: 18.10.2004 18:18
Последняя надежда на вас, люди..

нужно из http://myname/?forum=programming
сделать http://myname/programming

В форуме искал и фильтром пользовался.. =(

нашел только такое:
RewriteEngine on
RewriteRule ^\?([0-9]*)$ /index.php?forum=$1

но тогда получается http://myname/index.php/programming
Автор: Tropin
Дата сообщения: 19.10.2004 09:40
nastavnik
Учи паттерны!
RewriteRule ^\?forum=(.*)$ /$1
Автор: nastavnik
Дата сообщения: 22.10.2004 19:29
Tropin
спасибо.

All
У меня такая проблемка:
Индексный файл должен быть - index.html
Есть также жизненно важный файл index.php
При запросе http://myname/?forum=programming грузится такая вот ссылка http://myname/ndex.html?forum=programming (должно конечно http://myname/ndex.php?forum=programming)
Подскажите как устранить проблему с помощью mod_rewrite
Автор: Cheery
Дата сообщения: 22.10.2004 20:07
nastavnik

Цитата:
Подскажите как устранить проблему с помощью mod_rewrite

прописать в httpd.conf или htaccess index.php в DirectoryIndex
удалить index.htm
либо тогда перекидывать запросы вида /?forum=..
честно на index.php?forum=..

Цитата:
(должно конечно http://myname/ndex.php?forum=programming)

не должно.. порядок поменяй файлам в DirectoryIndex.. но тогда любой запрос в диру будет сначала идти к index.php
Автор: nastavnik
Дата сообщения: 23.10.2004 13:12

Цитата:

либо тогда перекидывать запросы вида /?forum=..
честно на index.php?forum=..

безусловно лучший вариант,
подскажите pls как сделать.
Автор: Cheery
Дата сообщения: 24.10.2004 00:04
nastavnik

Цитата:
безусловно лучший вариант,

честно я имел ввиду так и писать.. index.php?forum=
Почему? потому что апач начинает перебирать DirectoryIndex файлы по порядку, токльо потом цепляя к ним запрос ?forum=
Вот скажи мне.. зачем в одной дире index.html и index.php?

Автор: nastavnik
Дата сообщения: 24.10.2004 00:37

Цитата:
Вот скажи мне.. зачем в одной дире index.html и index.php?

index.php - необходимый файл для функционирования скрипта, а сайту нужна стартовая страничка. Запрос вида ?forum= должен быть преобразован/переадресован на index.php?forum=
Вот.
Автор: Cheery
Дата сообщения: 24.10.2004 01:41

Цитата:
index.php - необходимый файл для функционирования скрипта,

ну так поменяй ему имя.. или указывай URL полностью.. или перенеси его в отдельную диру.
но если хочется поизвращаться, то вот
RewriteCond %{QUERY_STRING} forum=(.*)
RewriteRule ^/index.html /index.php?forum=%1
Автор: nastavnik
Дата сообщения: 24.10.2004 12:59
Все-таки решил index.php поместить в директорию forums. Теперь URL имеет вид http://myname/forums/?forum=..
А вот что из этого получилось http://forum.ru-board.com/topic.cgi?forum=25&topic=3889#1
Автор: xy
Дата сообщения: 05.11.2004 18:28
мне надо, чтобы любой урл вида

хттп://урл/
хттп://урл
хттп://урл/чего-то-там

переходил в
хттп://урл/РУ/(далее по тексту)

делал как написано тут: http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html

RewriteEngine on
RewriteRule ^/$ /RU/ [R]

но эффект был нулевой - что я сделал не так?

+ еще надо бы, чтоб это правило _не_ распространялось на папку и подпапки
хттп://урл/EN/..

помогите, люди добрые:)
Автор: Tropin
Дата сообщения: 06.11.2004 10:53
xy
А подробнее про "эффект был нулевой", что в логах и что на экране?
Автор: Infection
Дата сообщения: 08.11.2004 12:45
я начинаю потихонечку сходить с ума

был у меня сайт, и к были на нем файлы в корне

resort
resorts
country
counrties
narration
narrations

файлы работали в апаче как

/resort?id=24 или /resorts?id=24
/country?id=256 или /countries?id=256

теперь этих файлов нету, вместо них index.php, который работает как

/index.php?Resort=24
/index.php?Country=256


Ну, чтобы старые страницы открывались, которые до сих пор висят во всяких поисковиках, сделал следующее:

RewriteCond %{REQUEST_URI} ^/resort.* [OR]
RewriteCond %{REQUEST_URI} ^/countr.* [OR]
RewriteCond %{REQUEST_URI} ^/narration.*

RewriteRule "^resort.+id\=([0-9]+)$" "index.php?Resort=$1"

читаем "
начинается с букв r, e, s, o, r, t,
далее следует неопределенное количество обязательных символов пока не найдем буквы i,d вместе,
затем =
и группа обязательных цифр"

вроде /resort?id=24 и /resorts?id=24 попадают под это правило, ан не работает

под .+ попадают "s?" или просто "?"

чего не так?

Автор: jason32
Дата сообщения: 09.11.2004 02:34
По-моему,птичка "^" должна стоять САМОЙ ПЕРВОЙ,иначе она работает как отрицание(или вообще не работает,не помню точно).Так что кавычка " явно лишняя.

Добавлено
INFECTION,я,кстати тоже всех тут спрашиваю-как экранировать "?" и возможно ли это вообще.У меня нехорошее предчувствие,что URL со знаком вопроса APACHE раскладывает самостоятельно на переменные до всяких модреврайтов.Жду подтверждения уважаемых людей.
lynx,ОТЗОВИСЬ!!!!

Страницы: 1234567891011

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


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