Cakephp 2.2 без mod_rewrite перенаправление неправильно
Я сделал все настройки, чтобы не использовать mod_rewrite Apache 2.2 и CakePHP.
Apache2 запущен и работает, и Cake, кажется, тоже работает. Если я пойду http://127.0.0.1/cake/index.php
все зеленые метки вместе (используя PostgreSQL 9.1). Я следовал за руководством, чтобы создать проект блога и создал файл контроллера в /var/www/cake/app/Controller/PostsController.php
(также имеет CakeController
а также AppController
а также PagesController
файлы).
В директории Model я получил Post.php и AppModel, как сказано в руководстве. А в папке View я создал папку Posts, а также файлы index.ctp и view.ctp.
Когда я набираю URL, как http://127.0.0.1/cake/index.php?url=/posts/
он идет в index.php главной папки Cake. Он перенаправляет туда! Если я изменю URL, например, на http://127.0.0.1/cake/index.php?url=/posts/view/1
(как учебник) то же самое. Что пошло не так в этой картине?
Моя среда - Debian 6.0-6 64bit. Apache2.2 (установлен с SO), CakePHP 2.2.3 и PHP 5.2.8 (или выше).
1 ответ
Вы уверены, что mod_rewrite
включен и переписывает? Можете ли вы опубликовать содержимое ваших файлов.htaccess - того, что находится в каталоге верхнего уровня (т.е. htdocs), и того, что в вашем app/webroot
реж? Ваш каталог верхнего уровня с app
а также lib
в этом. Я подозреваю, что ваш RewriteRule
Это неправильно в обоих. В любом случае, если вы не изменили эти файлы, это определенно будет неправильно.:) Вы не должны менять середину .htaccess
файл - тот, в app
,
Здесь уже дан ответ, и CakeBook объясняет это здесь. Но я лично использую немного другую настройку:
/var/www/test.cake.lan/htdocs/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ /app/webroot/ [L]
RewriteRule (.*) /app/webroot/$1 [L]
</IfModule>
/var/www/test.cake.lan/htdocs/app/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
/var/www/test.cake.lan/htdocs/app/webroot/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/webroot/index.php?url=$1 [QSA,L]
</IfModule>