У меня никогда раньше не было проблем с cakePHP, но что-то странное в этом сервере, и оно вызывает странное поведение перенаправлений в файлах .htaccess.
CakePHP использует mod_rewrite в файлах .htaccess для перенаправления запросов в собственную папку webroot. Проблема состоит в том, что перенаправления перечисляют неправильный путь и вызывают ошибку 404. У моего приложения CakePHP, которое хранится в каталоге листингов, есть файл .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [R=301,L]
RewriteRule (.*) app/webroot/$1 [R=301,L]
</IfModule>
(* обратите внимание, что R = 301 вызывает внешнее перенаправление, чтобы мы могли видеть, что происходит с нашего конца. Он должен действительно опустить этот флаг и выполнить внутреннее перенаправление, прозрачное для конечных пользователей)
Это должно перенаправить любой запрос с http://hostname.com/~username/listings/
на http://hostname.com/~username/listings/app/webroot/
Однако вместо простого добавления «app/webroot/
» в конец, как это и должно быть, добавляется полный путь к серверу (/home/username/public_html/listings/app/webroot/
), в результате чего получается окончательный URL-адрес http://hostname.com/home/username/public_html/listings/app/webroot/
, который, очевидно, неверен и вызывает ошибку 404.
Хостинг находится на общем хостинге, что ограничивает возможности, которые я могу сделать с настройками. Я никогда не видел, чтобы это случилось раньше, и я думаю, что это что-то не так с хостинговой стороны, но если у кого-то есть какие-то полезные предложения, я могу также передать их хостинговой компании.