如何为PHP项目映射URL和目录结构
我想为我的PHP项目创建一个文件夹结构,如图所示如何为PHP项目映射URL和目录结构,php,url,directory-structure,url-mapping,Php,Url,Directory Structure,Url Mapping,我想为我的PHP项目创建一个文件夹结构,如图所示 Public文件夹中有UI代码文件,src文件夹中有后端代码文件。但问题是,当我想从浏览器访问页面时,我必须在URL中输入文件夹名称 比如,如果我想进入home.php我必须键入http://localhost/public/home.php。因此,我想从我的url中删除/public,使其看起来像http://localhost/home.php 那么,有没有一种方法可以将文件路径映射到URL,并从浏览器访问该URL?如果您使用apache来
Public
文件夹中有UI代码文件,src
文件夹中有后端代码文件。但问题是,当我想从浏览器访问页面时,我必须在URL中输入文件夹名称
比如,如果我想进入home.php
我必须键入http://localhost/public/home.php
。因此,我想从我的url中删除/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中有一个指向其他文件/dir的符号链接。禁用此选项后,Apache将拒绝遵循此类符号链接
重新启动引擎
打开重写引擎:),以便可以使用重写条件和规则等。
RewriteCond%{REQUEST\u 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只包含字母a-z a-z和数字0-9。+
表示url可以有多个字符,$
表示“url检查器”结束
/public/$1.php
这也是url应该链接的文件。
因为我们在根文件夹中,所以需要访问/public,因为url是domain.tld/home$1
是home,所以它打开/public/home.php,但url保持domain.tld/home
希望有帮助 我正在使用Apache作为服务器。请在Apache手册中查找虚拟主机。如果有人已将此问题标记为已询问,请将其删除。我不是在寻找解决办法。没有关系。你能解释一下代码吗?