Не удалось открыть обязательное «перенаправление: /index.php» (include_path = '.: / Usr / lib64 / php: / usr / lib / php') в поле «Неизвестно» в строке 0 - PullRequest
1 голос
/ 02 апреля 2012

Я переместил свой сайт с локального на сервер, и правила переписывания в моем .htaccess не работали.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^contact-us$ index.php?p=2
</IfModule>

Это то, что есть в моем .htaccess.

НоЯ уверен, что .htaccess распознается сервером (я проверил, поместив мусор в .htaccess - у меня ошибка сервера).

Для дальнейшей диагностики проблемы я изменил свой .htaccess, как показано ниже:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^contact-us$ index.php?p=2
RewriteRule contact-us$ index.php?p=2
RewriteRule ^contact-us index.php?p=2
RewriteRule contact-us index.php?p=2
</IfModule>

Теперь я получаю странную ошибку при посещении моего site.com/contact-us

Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

Fatal error: Unknown: Failed opening required 'redirect:/index.php' (include_path='.:/usr/lib64/php:/usr/lib/php') in Unknown on line 0

1 Ответ

2 голосов
/ 03 апреля 2012

Apache каким-то образом автоматически добавляет .php к моему URL. (Думаю из-за AddHandler)

У меня есть contact-us.php, но я хочу направить contact-us в index.php?p=2. Поскольку Apache добавляет .php и проверяет, существует ли contact-us.php, он не соответствует маршруту contact-us. Поэтому я переименовал свой файл в php-contact-us.php и сохранил маршрут и мой URL-адрес одинаковыми. Таким образом, перенаправление работает, как и ожидалось.

...