如何将 URL 与 PHP 项目的目录结构映射 [重复]
Posted
技术标签:
【中文标题】如何将 URL 与 PHP 项目的目录结构映射 [重复]【英文标题】:How to map URL with directory structure for PHP project [duplicate] 【发布时间】:2021-02-16 10:22:02 【问题描述】:我想为我的 php 项目创建一个文件夹结构,如图所示。
Public
文件夹包含 UI 代码 文件,src
文件夹包含后端代码 文件。但问题是当我想从浏览器访问页面时,我必须将文件夹名称放在 URL 中。
如果我想去home.php
,我必须输入http://localhost/public/home.php
。所以我想从我的网址中删除/public
,所以它应该看起来像http://localhost/home.php
那么有没有一种方法可以将文件的路径映射到 URL,然后我可以从浏览器访问该 URL?
【问题讨论】:
我使用 Apache 作为服务器。 在 Apache 手册中查找 Virtual Host 谁将此问题标记为已问,请将其删除。我不是在寻找那个解决方案。不相关。 【参考方案1】:如果您使用 apache 来完成这项工作,您可以使用 htaccess。
代码是:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^([a-zA-Z0-9]+)$ /public/$1.php
那么 home.php 的 url 将是 domain.tld/home
说明:Options +FollowSymLinks
选项 FollowSymLinks 使您能够在您的 webroot 中拥有一个指向其他文件/目录的符号链接。禁用此功能后,Apache 将拒绝遵循此类符号链接
RewriteEngine on
打开 RewriteEngine :) 这样您就可以使用重写条件和规则等。
RewriteCond %REQUEST_FILENAME !-d
就像 if 检查 url(即 domain.tld/home)是否不是目录
因为那时我们只想访问目录及其 index.html 或 .php ...
RewriteRule ^([a-zA-Z0-9]+)$ /public/$1.php
这是重写什么的规则。
^
这意味着我们正在用这个文件夹重写(.htaccess 应该在公共文件夹所在的根目录中)
([a-zA-Z0-9]+)$
这会检查 url 的部分 (domain.tld/home) 这里的部分是否 home 只包含字母 az AZ 和数字 0-9 +
表示 url 可以有更多比一个字符,$
表示“url 检查器”的结束
/public/$1.php
这也是 url 应该链接的文件。
因为我们在根文件夹中,我们需要访问 /public 并且因为 url 是 domain.tld/home $1
是 home 所以它打开 /public/home.php 但 url 保持 domain.tld/home
希望有帮助!
【讨论】:
你能解释一下代码吗?以上是关于如何将 URL 与 PHP 项目的目录结构映射 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
php与Redis实现一个100万用户的投票项目,如何实现实时查看投票情况?
URL结构/page.php与PHP中的/page [重复]