http://ipaddress/cakephp/コントローラ名/アクション
/var/www/html (ドキュメントルート) └/cakephp (CakePHPファイル一式)
しかし、ドキュメントルートの下は何かとごちゃごちゃするし、CakePHP のファイル一式を別のディレクトリに配置して、Apache の Alias を設定してドキュメントルートから切り離したくなった。
というわけで、以下のような感じにしてみようと思う。
アクセスURL: http://ipaddress/cake/コントローラ名/アクション
/var/www └/html (ドキュメントルート) └/cakephp (CakePHPファイル一式)
まずは、ドキュメントルートと同階層の /var/www 下に cakephp ディレクトリを丸ごとコピー
そして、Apache の設定
/etc/httpd/conf.d に cakephp.conf を作成する
Alias /cake /var/www/cakephp
<Directory "/var/www/cakephp">
# Options Indexes FollowSymLinks
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
これでOKと思い、早速、WelComeページ(http://ipaddress/cake/)にアクセスしてみる
なんかおかしい・・・
The requested URL /var/www/cakephp/app/webroot/ was not found on this server.
mod_rewrite あたりが怪しい気がする
いろいろ調べたら、CookBookにも書いていたが、
RewriteBaseステートメントをCakePHPが使う.htaccessファイル(/.htaccess、/app/.htaccess、/app/webroot/.htaccess)に追加する必要があります。
ドキュメントルート下に配置した場合はそのまま変更しないでよかったが、言われたとおりにやってみる
(詳しいことは調べてない)
cakephp/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /cake ←この行追加
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
cakephp/app/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /cake/app ←この行追加
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
cakephp/app/webroot/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cake/app/webroot ←この行追加
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
以上、3つの .htaccess に RewriteBase を追加することにより、アクセスできるようになりました。
あなたが神です。
返信削除大変貴重な情報をありがとうございます┏○))ペコ
お役に立てて光栄です
削除