Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 添加SSL后,Cakephp 3前缀路由在linux服务器中不起作用_Apache_.htaccess_Cakephp_Https_Cakephp3 - Fatal编程技术网

Apache 添加SSL后,Cakephp 3前缀路由在linux服务器中不起作用

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://

CakePHP版本:3.6

我创建了一个带有3个路径前缀的项目:
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]