在CakePHP中强制使用SSL + WWW .htaccess
问题描述:
我知道“如何强制使用HTTPS + WWW”这个主题经常被讨论和解决,并且通常它适用于我。在CakePHP中强制使用SSL + WWW .htaccess
但是现在我已经从CakePHP获得了特定的预定义.htaccess,我不知道如何包含它。
的.htaccess的CakePHP的:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
如果我把正常的代码HTTPS/WWW前或向后的代码强制,它不正确,因为所有的请求都设置为根目录下工作而不是例如/联系。
通常情况下,我使用:
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule^https://www.mydomain.com%{REQUEST_URI} [R=301]
但是你不能只包含上面......
有谁请帮助我包括 HTTPS/WWW在上面的.htaccess强制?
答
感谢LazyOne,这也许工作,但对我来说经常在“mydomain.com/redirect:/app/webroot/index.php”结束了这真的很奇怪。但也许这是由于“{REQUEST_URI}”,因为我不得不改变我
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
到
RewriteRule ^(.*)$ index.php [QSA,L]
由于奇怪的问题与重定向(不知道发生了什么,CakePHP的突然requestet一个“重定向:控制器”也在这里描述http://groups.google.com/group/croogo/browse_thread/thread/55539dabfd0191fd?pli=1 - 任何想法?)。
现在工作这个代码是:
RewriteCond %{HTTP_HOST} ^mydomain.com
RewriteRule (.*) https://www.mydomain.com/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.mydomain.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
答
这是应该的:
RewriteEngine On
# force https and www.
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule^https://www.mydomain.com%{REQUEST_URI} [R=301,L]
# route all requests for non-existing resources to CakePHP
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
答
最基本的方式就是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
无需硬编码的域名。当从http切换到https时,请求也不会重定向到根目录
这应该是最终接受的答案。硬编码域名是不好的业务。 – bazzaretta