【问题标题】:Cakephp 3 prefix routing not working in linux server after SSL added添加 SSL 后,Cakephp 3 前缀路由在 Linux 服务器中不起作用
【发布时间】:2020-08-25 21:23:08
【问题描述】:

CakePHP 版本:3.6

我创建了一个带有 3 个路由前缀的项目:adminvendorcustomer

在我的本地机器上它工作正常,所有前缀都工作正常。我将我的项目移到了远程 Linux 服务器上,起初它运行良好。一旦我添加了 SSL 证书并像这样访问我的网站:

https://subdomain.myproject.com/vendor

它不起作用。浏览器不断加载,一段时间后显示无法访问此站点,响应时间过长。

如果我添加一个斜杠,它就可以正常工作:

https://subdomain.myproject.com/vendor/

除了供应商前缀之外,其他前缀都按预期正常工作。是因为 CakePHP 有一个 vendor 文件夹还是因为服务器重定向?

请指导我,如何将http重定向到https?我在 .htaccess 中添加了一些内容,但它也显示了“重定向过多”的问题。

【问题讨论】:

    标签: apache .htaccess cakephp https cakephp3


    【解决方案1】:

    如果您在 Apache 中启用了mod_dir,默认情况下它应该会自动将您的请求重定向到带有尾部斜杠的相同 URL。来自Apache documentation

    当服务器收到一个“尾部斜杠”重定向 请求 URL http://servername/foo/dirname 其中 dirname 是 目录。目录需要尾部斜杠,因此 mod_dir 发出 重定向到 http://servername/foo/dirname/

    您可能确实启用了此功能,但请检查。

    是不是因为 cakephp 有 vendor 文件夹

    vendor 目录在 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 2020-11-30
      • 1970-01-01
      相关资源
      最近更新 更多