如何将 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结构加载php页面?

URL结构/page.php与PHP中的/page [重复]

将多个 php 文件视为目录,htaccess

如何将Spring Boot RepositoryRestResource映射到特定的URL

在 Spring MVC 的 servlet 映射中,如何映射 url 模式目录的根目录?