Помогите разобраться с реврайтом пожалуйста.

12
S
На сайте с 21.10.2007
Offline
34
872

Здравствуйте. Помогите разобраться с реврайтом пожалуйста.

Хочу "превратить" запрос типа : http://www.site.ru/index.php?dr=dir&id=bbb.html

в http://www.site.ru/dir/bbb.html

Для этого я прописал в файле .htaccess такие строки:


order allow,deny
allow from all
options -indexes
rewriteengine on
rewriterule ^([a-z]*)/([\D]*)/$
/index.php?direct=$1&id=$2

По идее код правильный. Но запустить эту штуку не удаётся, поэтому я грешу что не все

нужные директивы включены на сервере.

Подскажите пожалуйста, кто знает, какие дерективы должны быть включены на сервере и какие команды(модули) нужно написать.

Искал про RewriteEngine но везде одна и таже страница.

K
На сайте с 12.07.2006
Offline
295
Kpd
#1

RewriteEngine on

Options +FollowSymLinks

## Если файл существует, то не изменяем URL

## и завершаем обработку

RewriteCond %{SCRIPT_FILENAME} -f

RewriteRule .* - [L]

## Если каталог существует, то не изменяем URL

## и завершаем обработку

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule .* - [L]

RewriteRule ^([a-z]+)/([\D]+)[/]?$ /index.php?direct=$1&id=$2

S
На сайте с 21.10.2007
Offline
34
#2

Не получается показывает тот же самый старый путь. Я тут почитал Кое что. Пробовал на генераторе.

Делов в том что я через переменную id переношу имя файла в таком виде id=aaa.html

вот она ссылка:

http://www.site.ru/tags/index.php?dr=dir&id=aaa.html

И правило RewriteRule мне пристёгивает лишний .html Получается такой вид:

http://www.site.ru/tags/dir/aaa.html.html двойной .html значит нужно или

1. Убрать из переменной в запросе ссылки эти .html

2. Убрать эти .html в самом правиле.

Значит нужно убрать .html в самом регулярном выражении.

Вот как это сделать, убрать в регулярном выражении из второй переменной 5 последних символов??

K
На сайте с 12.07.2006
Offline
295
Kpd
#3

RewriteRule ^([a-z]+)/([\D]+)\.html$ /index.php?direct=$1&id=$2

S
На сайте с 21.10.2007
Offline
34
#4

Ничего не получается. Уже что только не пробовал. Выставил всё правильно.

RewriteEngine On

#RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?dr=$1&id=$2 [L]

RewriteRule ^([a-z]*)/([a-z]*)\.html$ /index.php?dr=$1&id=$2 [L,QSA]

#RewriteRule ^([a-z]+)/([\D]+)[/]?$ /index.php?direct=$1&id=$2

Перепробовал уже несколько вариантов и безрезультатно.

Всётаки мне кажетс что-то они на сервере не довключили.БЛИИИИН.

Написал в поддержку. Буду ждать до завтра врядли что мне кто-то напишет в выходной.

N
На сайте с 15.08.2007
Offline
5
#5
snug:
Ничего не получается. Уже что только не пробовал. Выставил всё правильно.

RewriteEngine On
#RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?dr=$1&id=$2 [L]
RewriteRule ^([a-z]*)/([a-z]*)\.html$ /index.php?dr=$1&id=$2 [L,QSA]
#RewriteRule ^([a-z]+)/([\D]+)[/]?$ /index.php?direct=$1&id=$2
Перепробовал уже несколько вариантов и безрезультатно.
Всётаки мне кажетс что-то они на сервере не довключили.БЛИИИИН.
Написал в поддержку. Буду ждать до завтра врядли что мне кто-то напишет в выходной.

Что-то вроде такого?

RewriteRule ^([a-z]+)/([\D]+)\.html$ /index.php?direct=$1&id=$2 [L] 

А можно узнать, что говорит сервер? Если конкретно - записи из error.log

S
На сайте с 21.10.2007
Offline
34
#6

Значит при включении правила выдаёт старый путь, как будто ничего не происходит. Уже хостеру звонил, тот сказал в лог файлах посмотреть, А я там ничего не вижу ошибок нет ответ 200. Не пойму ничего хоть ты тресни. Хостер говорит у них модревраайт включен по умолчанию.

K
На сайте с 12.07.2006
Offline
295
Kpd
#7

snug, посмотрите в логе ошибок :)

DyaDya
На сайте с 11.04.2007
Offline
147
#8

Все у вас включено, ибо вы же сами сказали, что типа работает, но криво.

snug:
И правило RewriteRule мне пристёгивает лишний .html Получается такой вид:

Я с трудом понимаю, почему пристегивается лишний .html, может зацикливание происходит в правиле? Ибо больше неоткуда взяться еще одному html ;)

Попробуй так-с

RewriteRule ^/?(.+)/(.+)\.html$ /index.php?direct=$1&id=$2.html [L]

И смотрите по логам веб-сервера!!! и не надо обязательно в ошибках искать.... Ошибки может и не быть, просто правило может не срабатывать из-за несовпадения запроса с шаблоном регулярки... и это ведь не значит, что произошла именно ошибка ;)

Выбирайте качественный хостинг (http://vashmaster.ru/informaciya/o_poleznyh_programmah/news83.php) и продвигайте сайты в СЕОПУЛЬТ (http://seopult.ru/ref.php?ref=72b5ed9561fe66a1). А на «SAPE» я в обиде :) Не упрекайте за очепятки, пишу вслепую (http://ergosolo.ru/) и также делаю сайты (http://www.vashmaster.ru/) ;)
S
На сайте с 21.10.2007
Offline
34
#9

Вот именно. Я уже скрипт переделал. Теперь у меня в переменных ссылки передаётся нормальный вид без .html то есть был такой: http://www.site.ru/index.php?dr=dir&id=bbb.html

Стал такой:

http://www.site.ru/index.php?dr=dir&id=bbb

Но переадресация не работает, а может работает но не корректно. Вот логи. Посление 5 попыток:

217.199.229.149 - - [18/Feb/2008:17:40:42 +0200] "GET /index.php HTTP/1.0" 200 683 "http://www.iwork.com.ua/index.php?dr=new2&id=1-2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

217.199.229.149 - - [18/Feb/2008:17:41:21 +0200] "GET /index.php?dr=dir&id=bbb HTTP/1.0" 200 681 "http://www.iwork.com.ua/index.php?dr=dir&id=ccc" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

217.199.229.149 - - [18/Feb/2008:17:40:37 +0200] "GET /index.php?dr=new2 HTTP/1.0" 200 510 "http://www.iwork.com.ua/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

217.199.229.149 - - [18/Feb/2008:17:41:36 +0200] "GET /index.php?dr=dir&id=bbb HTTP/1.0" 200 681 "http://www.iwork.com.ua/index.php?dr=dir&id=ccc" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

217.199.229.149 - - [18/Feb/2008:17:41:38 +0200] "GET /index.php?dr=dir&id=bbb HTTP/1.0" 200 681 "http://www.iwork.com.ua/index.php?dr=dir&id=bbb" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

Как видоно один в один а модрерайт включён и правило включено.

B
На сайте с 26.12.2006
Offline
51
#10
snug:
Вот именно. Я уже скрипт переделал. Теперь у меня в переменных ссылки передаётся нормальный вид без .html то есть был такой: http://www.site.ru/index.php?dr=dir&id=bbb.html
Стал такой:
http://www.site.ru/index.php?dr=dir&id=bbb
Но переадресация не работает, а может работает но не корректно. Вот логи. Посление 5 попыток:

217.199.229.149 - - [18/Feb/2008:17:40:42 +0200] "GET /index.php HTTP/1.0" 200 683 "http://www.iwork.com.ua/index.php?dr=new2&id=1-2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

217.199.229.149 - - [18/Feb/2008:17:41:21 +0200] "GET /index.php?dr=dir&id=bbb HTTP/1.0" 200 681 "http://www.iwork.com.ua/index.php?dr=dir&id=ccc" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

217.199.229.149 - - [18/Feb/2008:17:40:37 +0200] "GET /index.php?dr=new2 HTTP/1.0" 200 510 "http://www.iwork.com.ua/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

217.199.229.149 - - [18/Feb/2008:17:41:36 +0200] "GET /index.php?dr=dir&id=bbb HTTP/1.0" 200 681 "http://www.iwork.com.ua/index.php?dr=dir&id=ccc" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

217.199.229.149 - - [18/Feb/2008:17:41:38 +0200] "GET /index.php?dr=dir&id=bbb HTTP/1.0" 200 681 "http://www.iwork.com.ua/index.php?dr=dir&id=bbb" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
Как видоно один в один а модрерайт включён и правило включено.

это acceslog

выложите errorlog

PHP,MySQL,JavaScript,AJAX
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий