Просмотр полной версии : в чем проблема в modRewrite?
задача простая вместо некоторого каталога пересылать посетителя на главную страничку передавая ей определенные параметры
выдержка из файла .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, все буквы латиницей.
Кто нибудь подскажите что за фокус происходит.
вызови
index.php?menu_id=4&str_at=$2
мне кажется у тебя ошибка в скрипте...
и он молча умирает =)
2nagash
да вот в том то и дело что так он работает и все прекрасно. глючит где то в момент подстановки адреса, потому как ошибку не выдает значит modRewrite активируется, но вот почему пустая страничка абсолютно, я не пойму, и отловить в чем глюк тоже не могу так как по адресу http://m.ru/issue/ мои скрипты не активируются
добавь апачу лог реврайта и скопируй сюда, что он пишет
RewriteLog "file.txt"
RewriteLogLevel 3
2nagash
когда вставлю указанные строчки в .htaccess
сервак по всем запросам к данному домену 500 ошибку выдает
1 - убрать из .htaccess виндусовые переносы строк, оставить только \n
2 - в httpd.conf на твою папку поставить
AllowOverride All
может я чего то не так делаю но все равно 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>
что в этот момент записывается в эррор лог?
я конечно не вася пупкин, но простите, а зачем делать ЧПУ таким дурацким способом, когда можно сделать
Action throw /index.php
<FilesMatch ^([^\.]*)$>
ForceType throw
</FilesMatch>
Оригинал написал(а) juggy
я конечно не вася пупкин, но простите, а зачем делать ЧПУ таким дурацким способом, когда можно сделать
Action throw /index.php
<FilesMatch ^([^\.]*)$>
ForceType throw
</FilesMatch>
в чем преимущества этого метода?
Директива FilesMatch это core Apache feature, а вот mod_rewrite по-умолчанию не у всех хостеров встретишь.
Быстрее работает.
Сложный реврайт в .htaccess может глючить, а в настройки виртуального хоста в httpd.conf опять же не всякий хостер пустит.
Оригинал написал(а) juggy
Директива FilesMatch это core Apache feature, а вот mod_rewrite по-умолчанию не у всех хостеров встретишь.
Быстрее работает.
Сложный реврайт в .htaccess может глючить, а в настройки виртуального хоста в httpd.conf опять же не всякий хостер пустит.
а вот для основного хинта данного метода
Action throw /index.php
нужен mod_action
=)
частенько его не ставят на хостингах...
а мод реврайт ставят практически всегда. =)
Оригинал написал(а) juggy
Директива FilesMatch это core Apache feature, а вот mod_rewrite по-умолчанию не у всех хостеров встретишь.
думаю что насчет второго ты заблуждаешся...
Оригинал написал(а) juggy
Быстрее работает.
проведи бенчи, я еще не видел результатов.
Оригинал написал(а) juggy
Сложный реврайт в .htaccess может глючить, а в настройки виртуального хоста в httpd.conf опять же не всякий хостер пустит.
(с)Crazy.
mod_rewrite работает правильно.
Оригинал написал(а) juggy
ни разу не видел такого.
eurohoster.net
К тому же, намного удобнее, как мне, кажеться, работать в самих PHP файлах, а не писать условия в .htacceess'я для каждого случая.
у меня в .хтакссесе именно так а у вас?
2nagash
а в лог ничего не пишется так как 50 ошибка вылазит на домене при таком хитачесе, как тока убираю строчки
RewriteLog "file.txt"
RewriteLogLevel 3
домен начинает работать, т.е. не могу поставить логирование modRewrite
надо поставить логирование реврайта
а самому читать error лог апача... главный эррор лог... а не лог реврайта...
в момент когда выдаётся 500 ошибка в эррор лог самого апача падает причина...
в эррор лог сваливается
/home/m.ru/www/.htaccess: RewriteLog not allowed here
но я вроде бы указал что каталог доступен для записи
на папку поставить
AllowOverride ALL
Options +FollowSymLinks
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.