我正在考虑将一个 Web 应用程序投入生产,并对 htaccess 有一些疑问。
这是我的 htaccess(Zend Framework 提供的默认 htaccess):
SetEnv APPLICATION_ENV production
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
我想在其中添加两点,首先是基于应用程序环境强制 SSL 连接,但仅限于生产(其他可能的值是开发、测试和暂存)。我还想设置一个基于 HTTP 请求错误号的重定向到错误控制器中相应的错误操作。
我并不是在寻求完整的答案,而是至少想知道从哪里开始才能实现我的目标。
答案1
这是一个mod_rewrite 备忘单和环境变量调试方法对于初学者来说(很好的补充了相当稀疏的Apache mod_rewrite 文档, 恕我直言)。
您对 production/https 任务的解决方案可能看起来像这样:
RewriteEngine on
RewriteCond %{ENV:APPLICATION_ENV} ^production$
RewriteCond %{HTTPS} !^on$
RewriteRule .* https://%{HTTP_HOST}/$1 [R=301,L,QSA]