Htaccess переписать не найдено - PullRequest
2 голосов
/ 12 февраля 2010

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

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

Почему !!

Ответы [ 2 ]

0 голосов
/ 12 февраля 2010

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

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

0 голосов
/ 12 февраля 2010

Обновление

Я думаю, я только что понял, что ты хочешь сделать. Видите ли, вы можете передавать запросы за кулисами, но вы не можете передавать то, что вы предлагаете, за кадром. Вы должны сделать реальный редирект. Примерно так (важная часть 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 поддерживают . в каталогах, но я не уверен.

...