фиксация cakephp .htaccess/mod_rewrite для общих установок хостинга

php test.php

должен сделать это, или

php -f test.php

, чтобы быть явным.

11
задан user117643 4 June 2009 в 21:16
поделиться

7 ответов

Почему бы просто не распаковать файлы в / usr / www / users / username / ?

1
ответ дан 3 December 2019 в 05:13
поделиться

Я думаю, что .htaccess читает это '~' и думает, что вы ссылаетесь на свою домашнюю папку (что-то вроде ярлыка в Linux).

Самый быстрый способ запустить приложение - это перейти в файл config / core.php cake и отключить перезапись (он говорит вам раскомментировать некоторые вещи и удалить некоторые файлы .htaccess). другой способ - отредактировать ваш .htaccess и каким-то образом сказать, что '~' не относится к домашнему каталогу. может простой \ будет работать.

1
ответ дан 3 December 2019 в 05:13
поделиться

Вы изменяете не тот файл. Файл .htaccess, который вам нужно изменить, находится в / dev, вам не следует изменять его в /dev/cake/app/webroot/.htaccess

2
ответ дан 3 December 2019 в 05:13
поделиться

Не должно

RewriteBase /usr/www/users/username/dev/cake/app/webroot/ 

быть

RewriteBase /~username/dev/cake/

RewriteBase заботится о сопоставлении реальных URL-адресов виртуальным, и я думаю, что это то, что вам нужно.

13
ответ дан 3 December 2019 в 05:13
поделиться

Я размещаю на паре, и мне удалось заставить работать правила перезаписи, но у меня возникают проблемы с получением по ссылке HTML-> параметров сортировки для всех ссылок на страницах. Тот же код отлично работает в рабочем окне моего локального компьютера, но при сортировке пар или слишком большом количестве параметров запроса (страницы редактирования или обновления) возникают проблемы.

1
ответ дан 3 December 2019 в 05:13
поделиться

Да, вы должны указать путь DOCUMENT_ROOT в следующих файлах. Пожалуйста, обратитесь к phpinfo () вашего сервера, чтобы получить правильный путь DOCUMENT_ROOT. Это должно быть что-то вроде var / www / html / .

  1. .htaccess в корневом каталоге / (вне каталога приложений, торта, поставщиков)

     
     RewriteEngine на
     RewriteRule ^ $) DOCUMENT_ROOT / app / webroot / [L]
     RewriteRule (. *) DOCUMENT_ROOT / app / webroot / $ 1 [L]
    
    
  2. .htaccess в каталоге / app

     
     RewriteEngine на
     RewriteRule ^ $ DOCUMENT_ROOT / app / webroot / [L]
     RewriteRule (. *) DOCUMENT_ROOT / app / webroot / $ 1 [L]
    
    
  3. .htaccess в каталоге / app / webroot

     
     RewriteEngine On
     RewriteCond% {REQUEST_FILENAME}! -D
     RewriteCond% {REQUEST_FILENAME}! -F
     RewriteRule ^ (. *) $ DOCUMENT_ROOT / app / webroot / index.php? Url = $ 1 [QSA, L]
    
    

У меня это сработало.

1
ответ дан 3 December 2019 в 05:13
поделиться

У меня была аналогичная проблема с «расширенной установкой» из официальный CakePHP Cockbook. Через пару часов мне удалось заставить его работать.

ОС: Mac OS X

Основной каталог Cake: / usr / lib / cake
Мой каталог приложений приложения: / Users / myuser / dev / myapp
Корневой каталог моего приложения: / Users / myuser / Sites / myapp

Модификация /Users/myuser/Sites/myapp/index.php

if (!defined('ROOT')) {
    define('ROOT', DS.'Users'.DS.'myuser'.DS.'dev');
}
if (!defined('APP_DIR')) {
    define('APP_DIR', 'myapp');
}
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
    define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib');
}

Модификация /Users/myuser/Sites/myapp/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /~myuser/myapp/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

Что касается /Users/myuser/dev/myapp/.htaccess - этот файл не нужен в этой конфигурации, поэтому я удалил его. Самая сложная часть этой конфигурации - включить mod_rewrite в Apache. На Mac редактирование /private/etc/apache2/httpd.conf кажется бессмысленным (для этой задачи). Для каждого пользователя создается дополнительный файл конфигурации Apache.

Модификация /private/etc/apache2/users/myuser.conf

<Directory "/Users/myuser/Sites/">
    Options FollowSymLinks
    AllowOverride All
</Directory>

По умолчанию AllowOverride имеет значение None, поэтому mod_rewrite не будет работать в этой конфигурации.

После этого изменения http: // localhost / ~ myuser / myapp работает правильно.

PS. Быстрое исправление разрешений для каталога tmp.

sudo chgrp -R www /Users/myuser/dev/myapp/tmp
sudo chmod -R g+w /Users/myuser/dev/myapp/tmp
1
ответ дан 3 December 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: