【发布时间】:2017-04-18 18:09:02
【问题描述】:
所以我从另一个人那里买了一个脚本(没什么花哨的,让我们说只是一个定制的 CMS),它有点复杂,并且使用的框架除了“bootstrap”、“laravel”等名称外我一无所知.我是一个知道基础并且从中级水平知道一些东西的人,但同样,只有一些,所以当我看到一些花哨的解决方案时我会感到困惑。
就像这里一样 - 我从未见过基于具有奇怪扩展名的文件和 两个 .htaccess 文件构建的页面 - 一个在根目录中,第二个在 /public/ 文件夹中。尽管如此,即使有这么多文件,一切都运行得非常好而且很快。
这是问题的描述:
因此,当浏览器加载页面(domain.com)时,它似乎从 /public/ 文件夹请求(我猜)内容并且一切正常,并且域保持为 domain.com。问题是,domain.com/public 也可以工作,我想在这个特定地址上创建重定向只是为了防止索引这个看起来很糟糕的 domain.com/public 地址,但请记住,domain.com 应该仍然可以正常工作.
我已经尝试过在 SO 和其他页面上找到的 maaany 解决方案,但它们导致页面崩溃(内部服务器错误)或根本不执行任何操作。我认为其中一些可能有效,但仅当文件未嵌入另一个子文件夹时。呃,我不知道,我没有想法。你能帮帮我吗?
这是根目录的 .httaccess
RewriteEngine On
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
这里是 public/.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
【问题讨论】:
标签: apache .htaccess mod-rewrite server request