Перезапись Htaccess не найдена

Я использую Mod Rewrite для удаления index.php. Я не хочу использовать запросы. Я хочу, чтобы foo.com/bar интерпретировался как foo.com/index.php/bar.

Это нормально, но выдает ошибку Не найдено. Запрошенный URL /home/foo/www/index.php/bar не найден на этом сервере.

Почему !!


person Luke Burns    schedule 12.02.2010    source источник
comment
@ Люк, я обновил свой ответ. Думаю, я могу понять, что вы хотите сделать, поэтому дайте мне знать, если я это пропустил.   -  person Doug Neiner    schedule 12.02.2010


Ответы (2)


Обновить

Думаю, я только что понял, что вы хотите сделать. Видите ли, вы можете передавать запросы за кулисами, но вы не можете передать то, что предлагаете за кулисами. Вам нужно сделать фактическое перенаправление. Примерно так (важная часть - R):

RewriteRule ^bar$ index.php/bar [NC,QSA,R]

Это вызывает перенаправление на вашу страницу с использованием нового специального пути. Вы этого хотели?

Исходный ответ

Вы не можете передать путь к странице PHP таким образом, поскольку он будет интерпретироваться как часть пути. Скорее всего, ваш файл находится на машине Linux / Unix, где каталог может быть назван с . в нем. Извините, но вам придется использовать строку запроса:

RewriteBase /
RewriteRule ^bar$ index.php?page=bar [NC,QSA]

Или обновлено:

RewriteBase /
RewriteRule ^bar$ index.php?/bar [NC,QSA]

Я также думаю, что последние несколько версий Windows также поддерживают . в каталогах, но я не уверен.

person Doug Neiner    schedule 12.02.2010
comment
Да, Windows разрешает . в каталогах. - person John Feminella; 12.02.2010
comment
Я ищу сегментированный подход, а не по запросу. Думаю, Code Igniter использует его. Если только они не скрывают это. bit.ly/bGdA8n - person Luke Burns; 12.02.2010
comment
@ Люк, прочтите всю ссылку, которой вы поделились. Вы увидите, что их «Онлайн-решение» на самом деле index.php?/bar, которое по-прежнему использует строку запроса, только без имени переменной. - person Doug Neiner; 12.02.2010
comment
Ах! Поразительнй! Вот и все. Спасибо, Дуг! - person Luke Burns; 12.02.2010
comment
@ Люк Бернс Нет проблем, парень, извини, я сначала неправильно понял, что ты хотел! Удачи с проектом! - person Doug Neiner; 12.02.2010

index.php почти наверняка является файлом, а не каталогом, если только у вас (как ни странно) нет каталога с именем index.php. Apache правильно жалуется, что такого каталога нет.

Вы, вероятно, хотели сделать что-то вроде index.php?page=bar. Отрегулируйте свой .htaccess соответствующим образом.

person John Feminella    schedule 12.02.2010
comment
О, это как каталог? Что мне делать, если я не хочу использовать запросы? - person Luke Burns; 12.02.2010