|
|
|
| Всем привет!
Вообщем вот мой конфиг касаемо модуля, и вроде как все работает:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html?)\ HTTP
RewriteRule ^(.*)index\.(php|html?)$ $1 [R=301,L]
RewriteRule ^.*-d([0-9]+)/?$ index.php?DepartmentId=$1 [L,R]
</IfModule>
|
Только почемуто если я вызываю
http://localhost/abc/abc-d2/
сервер перенаправляет мена на
http://localhost/abc/index.php?DepartmentId=1
НО он эту строку и в URL строке браузера выводит, а мне та надо что бы он вывел:
http://localhost/abc/abc-d2/
Пробую убрать R из RewriteRule
RewriteRule ^.*-d([0-9]+)/?$ index.php?DepartmentId=$1 [L]
Воводит в браузере ошибку 400 bad request.
В чем проблема? | |
|
|
|
|
|
|
|
для: Scorpion15
(06.04.2011 в 08:57)
| | А вот эта строка зачем (скорее всего в ней дело)?
RewriteRule ^(.*)index\.(php|html?)$ $1 [R=301,L]
|
| |
|
|
|
|
|
|
|
для: cheops
(06.04.2011 в 10:02)
| | Эта строка перебрасывает например на localhost если мы ввели localhost/index.php или localhost/index.html, если её убираю все равно не работает. | |
|
|
|
|
|
|
|
для: Scorpion15
(06.04.2011 в 11:32)
| | Правильно ли я понимаю, что вы редактируете непосредственно httpd.conf? Если да, то перегружаете ли вы Apache после внесения правок.
PS Протестировал ваши условия в .htaccess, если убрать R у меня все работает корректно (без перебрасывания)
RewriteEngine on
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html?)\ HTTP
RewriteRule ^(.*)index\.(php|html?)$ $1 [R=301,L]
RewriteRule ^.*-d([0-9]+)/?$ index.php?DepartmentId=$1 [L]
|
| |
|
|
|
|
|
|
|
для: cheops
(06.04.2011 в 11:40)
| | Да Вы правильно понимаете, я именно в httpd.conf правлю. Apache конечно же перегружаю. Единственное что, я использую все это в виртуальном хосте <VirtualHost>, но я думаю это не должно повлиять! | |
|
|
|
|
|
|
|
для: Scorpion15
(06.04.2011 в 14:01)
| | А почему такая потребность создания правил именно на уровне виртуального хоста? А не скажем в .htaccess? | |
|
|
|
|
|
|
|
для: cheops
(06.04.2011 в 14:11)
| | Да вообщето потребности не никакой, кроме того чтобы все заработало, просто мне интересно сделать это именно так, или это невозможно, это что обязательно делать в .htaccess? | |
|
|
|
|
|
|
|
для: Scorpion15
(06.04.2011 в 14:19)
| | Вообще правила должны работать и на уровне виртуального хоста (даже побыстрее, чем в .htaccess), но с mod_rewrite всегда множество заморочек, начиная с того, что они могут зацикливаться, заканчивая тем, что правила регулярных выражений меняются от версии к версии. Вот вы еще одну обнаружили, причем эта фича может быть только в той версии Apache, которую используете вы, поставите другую версию - правила будут вести себя по другому... | |
|
|
|
|
|
|
|
для: cheops
(06.04.2011 в 14:22)
| | Да уж, получается не очень удобная штука, хотя очень нужная и классная, а альтернативы mod_rewrite нет? | |
|
|
|
|
|
|
|
для: Scorpion15
(06.04.2011 в 14:43)
| | Если не писать модуль для Apache самому, то альтернативы больше нет... | |
|
|
|
|
|
|
|
для: cheops
(06.04.2011 в 14:46)
| | Да уж.. Ну ладно, чего нибудь придумаю. Спасибо за помощь! | |
|
|
|