Apache 添加SSL后,Cakephp 3前缀路由在linux服务器中不起作用
CakePHP版本:3.6 我创建了一个带有3个路径前缀的项目:Apache 添加SSL后,Cakephp 3前缀路由在linux服务器中不起作用,apache,.htaccess,cakephp,https,cakephp3,Apache,.htaccess,Cakephp,Https,Cakephp3,CakePHP版本:3.6 我创建了一个带有3个路径前缀的项目:admin、vendor和customer 在我的本地机器上,它工作正常,所有前缀都工作正常。我把我的项目转移到一个远程Linux服务器上,一开始它工作得很好。一旦我添加了SSL证书并访问了我的网站,如下所示: https://subdomain.myproject.com/vendor 它不起作用。浏览器一直在加载,一段时间后显示无法访问此网站,需要很长时间才能响应。 如果我添加了一个尾随斜杠,它可以正常工作: https://
admin
、vendor
和customer
在我的本地机器上,它工作正常,所有前缀都工作正常。我把我的项目转移到一个远程Linux服务器上,一开始它工作得很好。一旦我添加了SSL证书并访问了我的网站,如下所示:
https://subdomain.myproject.com/vendor
它不起作用。浏览器一直在加载,一段时间后显示无法访问此网站,需要很长时间才能响应。
如果我添加了一个尾随斜杠,它可以正常工作:
https://subdomain.myproject.com/vendor/
除了供应商前缀之外,其他前缀也可以正常工作。是因为CakePHP有一个供应商文件夹,还是因为服务器重定向
请指导我,如何将http重定向到https?我在.htaccess中添加了一些内容,但它也显示了“重定向太多”的问题。如果您在Apache中启用了
mod_dir
,默认情况下,它会自动将您的请求重定向到带有尾随斜杠的同一URL。从:
当服务器收到请求时,将发出“尾部斜杠”重定向
请求URLhttp://servername/foo/dirname 其中dirname是一个
目录目录需要一个尾随斜杠,因此mod_dir发出一个
重定向到http://servername/foo/dirname/
很可能您已启用此功能,但请检查
是因为cakephp有供应商文件夹吗
供应商目录不应该在CakePHP中公开访问,我也不希望使用vendor
路由前缀会有任何问题
如何将http重定向到https
您的.htaccess应该如下所示,以强制HTTPS重定向并确保CakePHP功能正确:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# SSL redirect
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Required for CakePHP
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
重新启动发动机
重写基/
#SSL重定向
重写cond%{HTTPS}关闭[或]
RewriteCond%{HTTP:X-Forwarded-Proto}=HTTP
重写规则。*https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301]
#CakePHP所需
重写规则^$webroot/[L]
重写规则(.*)webroot/$1[L]