PDA

Просмотр полной версии : в чем проблема в modRewrite?


pavit
04.09.2004, 13:06
задача простая вместо некоторого каталога пересылать посетителя на главную страничку передавая ей определенные параметры

выдержка из файла .htaccess

RewriteRule ^(.*)kat\/(.*)$ $1index.php?menu_id=3&str_at=$2
RewriteRule ^(.*)issue\/(.*)$ $1index.php?menu_id=4&str_at=$2


при вызове http://m.ru/kat/ страничка обрабатывается правильно
а вот при вызове http://m.ru/issue/ вылетает незнамо куда, т.е. пустая голая страничка, без сообщений об ошибке

уже всю голову сломал не пойму в чем бяка?

как только меняю слово issue на другое все работает. Проверял правильно ли написано issue, все буквы латиницей.

Кто нибудь подскажите что за фокус происходит.

nagash
04.09.2004, 13:15
вызови
index.php?menu_id=4&str_at=$2
мне кажется у тебя ошибка в скрипте...
и он молча умирает =)

pavit
04.09.2004, 15:17
2nagash

да вот в том то и дело что так он работает и все прекрасно. глючит где то в момент подстановки адреса, потому как ошибку не выдает значит modRewrite активируется, но вот почему пустая страничка абсолютно, я не пойму, и отловить в чем глюк тоже не могу так как по адресу http://m.ru/issue/ мои скрипты не активируются

nagash
04.09.2004, 18:28
добавь апачу лог реврайта и скопируй сюда, что он пишет


RewriteLog "file.txt"
RewriteLogLevel 3

pavit
06.09.2004, 12:06
2nagash

когда вставлю указанные строчки в .htaccess
сервак по всем запросам к данному домену 500 ошибку выдает

nagash
06.09.2004, 16:25
1 - убрать из .htaccess виндусовые переносы строк, оставить только \n
2 - в httpd.conf на твою папку поставить
AllowOverride All

pavit
06.09.2004, 18:53
может я чего то не так делаю но все равно 500 ошибка.

файл .htaccess

Options -Indexes
RewriteEngine on
RewriteLog "file.txt"
RewriteLogLevel 3
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)kat\/(.*)$ /$1index.php?menu_id=3&str_at=$2
RewriteRule ^(.*)issue\/(.*)$ /$1index.php?menu_id=4&str_at=$2
ErrorDocument 404 /error/error.php
файл сохраняю в ФАРе в Юникс кодировке, так что виндовые примочки должны убираться при этом

выдержка из httpd.conf
<Directory "z:/home/m.ru/www">
AllowOverride All
</Directory>

nagash
06.09.2004, 20:44
что в этот момент записывается в эррор лог?

juggy
07.09.2004, 11:43
я конечно не вася пупкин, но простите, а зачем делать ЧПУ таким дурацким способом, когда можно сделать

Action throw /index.php
<FilesMatch ^([^\.]*)$>
ForceType throw
</FilesMatch>

Самурай
07.09.2004, 14:43
Оригинал написал(а) juggy
я конечно не вася пупкин, но простите, а зачем делать ЧПУ таким дурацким способом, когда можно сделать

Action throw /index.php
<FilesMatch ^([^\.]*)$>
ForceType throw
</FilesMatch>

в чем преимущества этого метода?

juggy
07.09.2004, 14:45
Директива FilesMatch это core Apache feature, а вот mod_rewrite по-умолчанию не у всех хостеров встретишь.

Быстрее работает.

Сложный реврайт в .htaccess может глючить, а в настройки виртуального хоста в httpd.conf опять же не всякий хостер пустит.

nagash
07.09.2004, 14:59
Оригинал написал(а) juggy
Директива FilesMatch это core Apache feature, а вот mod_rewrite по-умолчанию не у всех хостеров встретишь.

Быстрее работает.

Сложный реврайт в .htaccess может глючить, а в настройки виртуального хоста в httpd.conf опять же не всякий хостер пустит.

а вот для основного хинта данного метода

Action throw /index.php

нужен mod_action
=)
частенько его не ставят на хостингах...
а мод реврайт ставят практически всегда. =)

juggy
07.09.2004, 15:01
ни разу не видел такого.

Самурай
07.09.2004, 15:04
Оригинал написал(а) juggy
Директива FilesMatch это core Apache feature, а вот mod_rewrite по-умолчанию не у всех хостеров встретишь.

думаю что насчет второго ты заблуждаешся...

Оригинал написал(а) juggy

Быстрее работает.


проведи бенчи, я еще не видел результатов.

Оригинал написал(а) juggy

Сложный реврайт в .htaccess может глючить, а в настройки виртуального хоста в httpd.conf опять же не всякий хостер пустит.

(с)Crazy.
mod_rewrite работает правильно.

Самурай
07.09.2004, 15:06
Оригинал написал(а) juggy
ни разу не видел такого.

eurohoster.net

juggy
07.09.2004, 15:07
К тому же, намного удобнее, как мне, кажеться, работать в самих PHP файлах, а не писать условия в .htacceess'я для каждого случая.

Самурай
07.09.2004, 15:12
у меня в .хтакссесе именно так а у вас?

pavit
07.09.2004, 17:05
2nagash

а в лог ничего не пишется так как 50 ошибка вылазит на домене при таком хитачесе, как тока убираю строчки
RewriteLog "file.txt"
RewriteLogLevel 3
домен начинает работать, т.е. не могу поставить логирование modRewrite

nagash
07.09.2004, 20:18
надо поставить логирование реврайта
а самому читать error лог апача... главный эррор лог... а не лог реврайта...
в момент когда выдаётся 500 ошибка в эррор лог самого апача падает причина...

pavit
08.09.2004, 11:12
в эррор лог сваливается

/home/m.ru/www/.htaccess: RewriteLog not allowed here

но я вроде бы указал что каталог доступен для записи

nagash
08.09.2004, 17:10
на папку поставить
AllowOverride ALL
Options +FollowSymLinks