Php 将根文件夹设置为本地主机上Apache中的子文件夹,该子文件夹也将在生产服务器上工作
我有一个项目,它的“public”和“private”文件夹结构位于主项目根文件夹内的同一级别(请参见附图) 我希望本地服务器(在本例中为MAMP)自动默认为“public”文件夹作为域根目录。最好用php还是Apache来实现这一点 此外,当我将网站上传到生产服务器时,域名将设置在“公共”文件夹中,因此我理想情况下需要一个解决方案,这意味着我上传网站时,情况仍然如此,即“项目/公共”文件夹 这对我来说都是新鲜事,所以我有点不知所措,不知道最好的方法是什么Php 将根文件夹设置为本地主机上Apache中的子文件夹,该子文件夹也将在生产服务器上工作,php,apache,server,directory,Php,Apache,Server,Directory,我有一个项目,它的“public”和“private”文件夹结构位于主项目根文件夹内的同一级别(请参见附图) 我希望本地服务器(在本例中为MAMP)自动默认为“public”文件夹作为域根目录。最好用php还是Apache来实现这一点 此外,当我将网站上传到生产服务器时,域名将设置在“公共”文件夹中,因此我理想情况下需要一个解决方案,这意味着我上传网站时,情况仍然如此,即“项目/公共”文件夹 这对我来说都是新鲜事,所以我有点不知所措,不知道最好的方法是什么 基本上,您只需要创建一个虚拟主机配置文
基本上,您只需要创建一个虚拟主机配置文件,并在Apache配置文件中启用应用程序将在其上侦听请求的端口。我从未使用过MAMP,所以我给您举一个Linux机器上vhost配置的示例
DocumentRoot "/var/www/example/public"
<Directory "/var/www/example/public/">
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride None
Order allow,deny
Allow from all
# enable mod_rewrite
RewriteEngine on
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</Directory>
LogLevel Warn
ErrorLog /var/log/httpd/example-error.log
CustomLog /var/log/httpd/example-access.log combined
DocumentRoot”/var/www/example/public
选项-索引+FollowSymLinks+多视图
不允许超限
命令允许,拒绝
通融
#启用mod_重写
重新启动发动机
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
日志级别警告
ErrorLog/var/log/httpd/example-error.log
CustomLog/var/log/httpd/example-access.log组合
您通常会告诉服务器(Apache、Nginx、IIS等)站点的“根”在哪里,以及所有代码的起始位置。该代码可以使用
include
和require
在其他地方访问其他PHP代码,并且可以读取其他文件夹的文件系统(假设服务器权限正确)。通常都是这样做的,这样您就可以将文件从URL中直接访问的文件中分离出来,可以是PHP类(如Composter中的内容)、日志文件或自定义上载。我不知道public/private的具体情况,但是看到index.php文件有点奇怪outside@ChrisHaas我在公共和私有文件夹中也有index.php文件。我认为出于安全考虑,每个文件夹中都应该有一个index.php文件?因为我使用的是MAMP,我想我要找的是将公用文件夹设置为根目录的Apache代码,所以当我将站点上传到一个实时服务器时,它仍然可以像在本地主机上一样工作?在我看来,“在每个文件夹中放置index.php”是一种较旧的思维方式,通常与共享或托管主机相关。不是对的,也不是错的,但这是一种防止服务器配置错误的方法,对我来说,我只是确保我的服务器配置正确。(另外,我在Nginx上托管,在Nginx上,对服务器的配置拥有绝对控制权更为常见。)您能检查一下吗-