ラベル mod_rewrite の投稿を表示しています。 すべての投稿を表示
ラベル mod_rewrite の投稿を表示しています。 すべての投稿を表示

2013年2月23日土曜日

[apache] mod_rewrite 具体例 #1

apacheのmod_rewriteでハマったので
具体的にやりたい事と設定例を投稿していきます。

=今回やりたいこと=
http://hoge.ne.jp/appdir-name/foo/bar
へのアクセスを
http://hoge.ne.jp/appdir-name/index.php
へのアクセスに変える。

mod_rewriteの設定をする上でポイントは、
公式のドキュメント参照
■RewriteLogでログ出力して処理の流れを把握する
に尽きます。

まずは、rewriteモジュールがインストールされており、apacheにロードされているかの確認。httpd.confに下行があればok
LoadModule rewrite_module libexec/apache22/mod_rewrite.so


そして、rewriteのログ出力を行うようにhttpd.confに下行を追加 (なお、思うような挙動になったらログ出力をしないようにしておこう-> LogLevel 0にする)

RewriteLog /var/log/apache22/rewrite.log
RewriteLogLevel 7

上記のログファイルがない場合は、適宜作成しapacheのプロセスが書き込めるようにパーミッションを設定しておく。

当方の環境では、httpd.confに
Include etc/apache22/Includes/*.conf
とあるので/usr/local/etc/apache22/Includesに専用の設定ファイルである

appdir-name.confを作成して下記を記入。

  2 <Directory [absolute-path-to-document-root]/appdir-name>
  3 Order Allow,Deny
  4 Allow from all
  5
  6 RewriteEngine on
  7 RewriteBase /appdir-name
  8 RewriteRule ^.*/.*$ index.php
  9 </Directory>

ポイントは、7行目で先頭にスラッシュを含んで末尾にはスラッシュを含まないこと。さらに8行目の先頭にはスラッシュを含まないことです。

以上で設定が完了したのでapacheを再起動します。
/usr/local/etc/rc.d/apache22 restart

2012年12月8日土曜日

[Cake PHP] 404 Not Found

既出の記事がたくさんがあるが自分用のメモ

Cake PHP( ver. 2.2.2 ) で404 Not Found が出る場合の対処法

[0] apache の mod_rewrite が有効になっているか確認
httpd.confで以下の用になっていればOK

LoadModule rewrite_module libexec/apache22/mod_rewrite.so

[1] .htaccess にmod_rewriteに関する設定をする
以下の例は、[document-root]/cakeblog/にCake PHPを配置している場合

まずは、[document-root]/cakeblog/.htaccess

  1 <IfModule mod_rewrite.c>
  2    RewriteEngine on
  3    RewriteBase /cakeblog/
  4    RewriteRule    ^$ app/webroot/    [L]
  5    RewriteRule    (.*) app/webroot/$1 [L]
  6 </IfModule>

次は、[document-root]/cakeblog/app/.htaccess

  1 <IfModule mod_rewrite.c>
  2     RewriteEngine on
  3     RewriteBase /cakeblog/app/
  4     RewriteRule    ^$    webroot/    [L]
  5     RewriteRule    (.*) webroot/$1    [L]
  6 </IfModule>

最後に[document-root]/cakeblog/app/webroot/.htaccess

  1 <IfModule mod_rewrite.c>
  2     RewriteEngine On
  3     RewriteBase /cakeblog/app/webroot/
  4     RewriteCond %{REQUEST_FILENAME} !-d
  5     RewriteCond %{REQUEST_FILENAME} !-f
  6     RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
  7 </IfModule>

[2] apacheの設定
cakeblog専用の設定ファイルを/usr/local/etc/apache22/Includes/に「cakeblog.conf」として作成して、以下を記す。


  1 <Directory "/usr/local/www/apache22/data/cakeblog">
  2     AllowOverride All
  3     Order allow,deny
  4     Allow from all
  5 </Directory>


そして、apacheを再起動して終了