Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为PHP项目映射URL和目录结构_Php_Url_Directory Structure_Url Mapping - Fatal编程技术网

如何为PHP项目映射URL和目录结构

如何为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来

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

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手册中查找虚拟主机。如果有人已将此问题标记为已询问,请将其删除。我不是在寻找解决办法。没有关系。你能解释一下代码吗?