【问题标题】:how to configure htaccess file if main controller resides in public folder如果主控制器位于公用文件夹中,如何配置 htaccess 文件
【发布时间】:2016-09-12 21:45:29
【问题描述】:

我看到了一个与我的几乎相同的问题,但由于某种原因,接受的答案不起作用。

我的问题是我无法访问位于公共文件夹内的 index.php。我尝试了无数组合,并相信它在正确的文件夹中——公用文件夹。

无效的答案是使 ReWriteBase %{DOCUMENT_ROOT}/public。我这样做了,但得到了一个索引。不过,至少公用文件夹是不可见的,所以感觉我快要接近了。

感谢任何帮助。

PS。我可以使用 RewriteBase /projectname/public 在本地计算机上查看应用程序,但 URL 必须包含 public,否则我会获得页面索引。我想摆脱公共部分并摆脱根(域名)。

这是我的 .htaccess 文件:

Options -MultiViews
RewriteEngine On
RewriteBase %{DOCUMENT_ROOT}/public
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

更新的 htaccess 文件:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /public/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案1】:

    RewriteBase 应该是来自DocumentRoot 的相对路径,而不是完整路径。

    这里有 2 个你需要使用的 .htaccess:

    root/.htaccess:

    RewriteEngine On
    
    RewriteRule .* public/$0 [L]
    

    public/.htaccess:

    DirectoryIndex index.php
    Options +FollowSymLinks -MultiViews
    RewriteEngine On
    RewriteBase /public/
    
    RewriteRule ^index\.php$ - [L,NC]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* index.php?url=$0 [QSA,L]
    

    【讨论】:

    • 感谢您的回复。我一定做错了什么。你显然是专家。我得到相同的页面索引,其中包括公用文件夹。有 URL 有帮助吗?
    • 那太好了。谢谢。
    • 谢谢。 htaccess 文件位于公用文件夹中。 URL = seabreezespa.com
    • 路径是 seabreezespa.com/app/core/ 。然而,我只是注意到了一些奇怪的事情。在 InMotionHosting 的文件管理器中,seabreezespa.com 旁边没有 + 号来展开目录树。文件在那里,但没有触发查看目录。我不确定它是否会影响正在发生的事情。也许当我上传文件时,出了点问题。
    • 太棒了!完毕!现在删除了“公共”部分。它被附加到我的 ASSET_ROOT 常量的末尾。这完美!非常感谢你!!基于你的决心和坚持帮助我,我可以开始理解为什么你有 376k 点。你非常乐于助人。我计划仔细查看您用来了解其工作原理的正则表达式。再次感谢您。
    猜你喜欢
    • 2017-10-12
    • 1970-01-01
    • 2022-07-21
    • 2011-06-24
    • 2017-04-21
    • 2017-10-18
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多