Zend Framework 環境設定(.htaccess)

Zend Framework の いわゆるzfコマンド(zf.sh/zf.bat)で生成される「.htaccess」について

今回は「Zend Framework 1.12.3」 を利用した例です。

[プロジェクト名]
— application
— data
— docs
— library
— nbproject
— public —- .htaccess
— tests

「public」配下に「.htaccess」があります。

生成された「.htaccess」の内容
——————————————————————————————
RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ – [NC,L]
# The following rewrites all other queries to index.php. The
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting, the base path will be prepended to
# allow proper resolution of the index.php file; it will work
# in non-aliased environments as well, providing a safe, one-size
# fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::$
RewriteRule ^(.*)$ – [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
——————————————————————————————
XAMPP(ローカル環境)では問題なく動作しました。

通常はこちらで問題無いようですが、設置環境により改造が必要となります。
「さくらインターネット」のレンタルサーバ(スタンダードプラン)に設置したところ、見事に動きませんでした。
そこで改造した「.htaccess」が下記のものです。

さくら用に作成した「.htaccess」の内容
——————————————————————————————
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) – [E=HTTP_AUTHORIZATION:%1]

RewriteBase /[ここはプロジェクト名]/public
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ – [NC,L]
RewriteRule ^.*$ index.php [NC,L]
——————————————————————————————
緑字部分青字部分で用途が異なります。

必要最小限は「RewriteEngine On」と青字部分です。
RewriteBase の指定が必要となりました。

緑字部分ですが、こちらはプログラム(PHPなどで)BASIC認証する際に必要となります。
(プログラムでBASIC認証しない方は不要)

「さくらインターネット」のレンタルサーバでは(プランにもよるかもしれませんが)、PHPがApacheモジュール版ではなく、CGI版として動作します。

CGI版では、$_SERVER[“PHP_AUTH_USER”] と $_SERVER[“PHP_AUTH_PW”] の取得がそのままではできないのですが、こちらを記述しておくと可能になります。