如何使用PHP项目的目录结构映射URL

问题描述

我想为我的PHP项目创建一个文件夹结构,如图所示。

enter image description here

Public文件夹具有 UI代码文件,而src文件夹具有后端代码文件。但是问题是当我想通过浏览器访问页面时,必须将文件名称放在URL中。

就像我要转到home.PHP一样,我必须键入http://localhost/public/home.PHP。因此,我想从自己的网址中删除/public,使其看起来像http://localhost/home.PHP

有没有办法将文件的路径映射到URL并可以从浏览器访问该URL?

解决方法

如果您正在使用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一样检查网址(例如domain.tld / home)是否不是目录 因为这样我们只想访问目录及其index.html或.php ...

RewriteRule ^([a-zA-Z0-9]+)$ /public/$1.php
这是重写内容的规则。
^这意味着我们正在使用此文件夹进行重写(.htaccess文件也应位于公用文件夹所在的根目录中)
([a-zA-Z0-9]+)$会检查网址的那部分(domain.tld / home),这里的那一部分会是home,除了字母az AZ和数字0-9以外,+意味着该网址可以包含不止一个字符,$表示“ URL Checker”的结尾
/public/$1.php这也是URL也应该链接的文件。 由于我们位于根文件夹中,因此需要进入/ public,并且由于URL为domain.tld / home $1为home,因此它将打开/public/home.php,但URL仍为domain.tld / home

希望有帮助!