php - 在本地主机上的 Apache 中将根文件夹设置为子文件夹,这也将在生产服务器上工作
问题描述
我有一个项目,它有一个“公共”和“私人”文件夹结构,位于主项目根文件夹内的同一级别(见附图)。
我希望本地服务器(在本例中为 MAMP)自动默认为“公共”文件夹作为域根目录。这样做最好是在 php 中还是在 Apache 中?
此外,当我将网站上传到生产服务器时,域名将设置在“公共”文件夹中,所以我理想情况下想要一个解决方案,这意味着我在上传网站时仍然是这种情况 - 即www.example.com将是“项目/公共”文件夹。
这对我来说是全新的,所以对于解决这个问题的最佳方法有点不知所措。
解决方案
基本上,您只需要创建一个虚拟主机配置文件并启用 Apache 配置文件中的端口,您的应用程序将在该端口上侦听请求。我从未使用过 MAMP,所以我给你一个 Linux 机器上的虚拟主机配置示例
在 /etc/httpd/conf.d/ 中创建一个 conf 文件
vim /etc/httpd/conf.d/example.conf
该文件将告诉 Apache 服务器特定端口的文档根目录。PORT 可以是除保留端口 (0-1023) 之外的任何可用端口
<VirtualHost *:80> KeepAlive On
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
在 Apache conf 文件 (/etc/httpd/conf/httpd.conf) 中添加此 Port No PORT
听端口
重新启动 Apache 服务器
与 XAMP 和 WAMP 一样,MAMP 也应该有一个 GUI 来配置 Apache 服务器。您可以找到保存这些虚拟主机配置的位置/文件夹,并且可以直接通过任何文本编辑器修改该文件
你也可以参考这些
推荐阅读
- python - Conda环境中的Tensorflow安装错误
- excel - 查看文件夹/子文件夹以查找和打印 pdf 列表
- twilio - Twilio 可编程视频 - 无需用户输入房间 ID 和名称即可开始视频通话
- git - 保留最后 X 次提交和历史记录
- python - 如何使用 random.random() 生成 30 到 35 之间的伪随机实数?
- javascript - 从服务器到客户端的 Json 数据传输
- snowflake-cloud-data-platform - 根据微分区获取选择数据
- pandas - 合并和排序包含不同排列的相同内容和不同关联值的两个熊猫数据框
- mysql - MySQL MHA binlog 设置检查失败
- android - Android Room 版本代码的用途是什么