【问题标题】:MVC public folder htaccess is not workingMVC 公用文件夹 htaccess 不起作用
【发布时间】:2017-05-21 20:32:47
【问题描述】:

我最近将我的 index.php(处理路由的文件)和 CSS、JavaScript 和字体资源移到了 public/ 文件夹中。出于安全目的,我只希望可以访问此 public/ 文件夹中的项目。当我意识到我可以访问 mysite.com/composer.lock 并使用我的旧 .htaccess 和文件夹设置查看作曲家锁定文件时,我遇到了这个问题。

这就是我想要的

如果我访问mysite.com/car/create,我希望它实际上指向mysite.com/public/index.php?path=car/create

如果我链接到 mysite.com/css/style.css 等资产,我希望它真正指向 mysite.com/public/css/style.css

这是我的文件夹结构

这是我的.htaccess,它根本不工作

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)$ public/index.php?path=$1 [L,QSA]
</IfModule>

我该如何解决这个问题?它只是生成空页面,我仍然可以直接访问根目录下的文件等。

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    您现有的指令专门避免重写对现有文件的请求,因此它仍然使您能够访问根目录中的文件。它还会将静态资源重写为public/index.php?path=,这可能会失败。

    请尝试以下方法:

    RewriteEngine On
    
    # Stop processing if already in the /public directory
    RewriteRule ^public/ - [L]
    
    # Static resources if they exist
    RewriteCond %{DOCUMENT_ROOT}/public/$1 -f
    RewriteRule (.+) public/$1 [L]
    
    # Route all other requests
    RewriteRule (.*) public/index.php?path=$1 [L,QSA]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2012-07-20
      • 2022-06-22
      • 2013-12-30
      • 1970-01-01
      • 2021-08-10
      • 2018-06-22
      相关资源
      最近更新 更多