【发布时间】:2016-10-14 08:01:15
【问题描述】:
我在将所有请求重定向到放置在公共文件夹中的 index.php 文件时遇到问题。
Name_of_app
|-app
| |--controllers/
|-config/
| |--db.config
|-public/
| |--js/
| |--css/
| |--index.php
| |--.htaccess
|-vendor/
|-.htaccess
|-composer.json
有两个 .htaccess 文件, 首先是 Name_of_app/.htaccess 文件,这应该将所有流量重定向到 Name_of_app/public 文件夹
RewriteEngine On
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]
其次是 Name_of_app/public/.htaccess 文件,它将所有流量重定向到 /public/index.php 文件
RewriteEngine On
# Some hosts may require you to use the `RewriteBase` directive.
# If you need to use the `RewriteBase` directive, it should be the
# absolute physical path to the directory that contains this htaccess file.
#
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
问题是:
1. 我无法从 url www.name_of_app.com/ 访问 /public/index.php 文件。
2. www.name_of_app.com/index.php显示/public/index.php page not found错误
帮我解决这个问题。谢谢。
【问题讨论】:
-
为什么要将规则集拆分为两个单独的文件?这只会使事情变得更复杂,并进一步减慢 http 服务器的速度。整合规则。
-
老实说,我会将
DOCROOT设置为public文件夹。 -
“我无法访问”实际上是什么意思? 要准确。 “显示...页面未找到错误”意味着什么确切地? _该错误在哪里显示?
-
@arkascha url www.name _of_app/ 显示“在此服务器上找不到请求的 URL /public/。”
-
对不起,但我实际上对此表示怀疑。这意味着内部重写过程的细节会暴露在外部,这听起来不太可能。我的印象是,您在现实世界中的问题实际上与您在此处发布的内容不同。
标签: php apache .htaccess redirect mod-rewrite