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”] の取得がそのままではできないのですが、こちらを記述しておくと可能になります。