PHP网站:使URL/path存在,而不实际存在

PHP网站:使URL/path存在,而不实际存在,php,url,Php,Url,这可能是个愚蠢的问题 我有一个有很多数据的网站,我需要搜索引擎索引每个页面。将有数十万页。除了在我的服务器上存储400000个php文件和文件夹,还有没有其他方法可以向搜索引擎/用户显示文件存在并生成页面,而不实际将其存储在文件系统中?这个问题的另一个副作用是,我使用的所有ftp程序似乎也限制了您可以查看的文件夹数量,因此我无法轻松访问我生成的文件或文件夹 该网站是用PHP生成的 我需要URL如下所示: mysite.com/folder/12345678/this-is-a-descripti

这可能是个愚蠢的问题

我有一个有很多数据的网站,我需要搜索引擎索引每个页面。将有数十万页。除了在我的服务器上存储400000个php文件和文件夹,还有没有其他方法可以向搜索引擎/用户显示文件存在并生成页面,而不实际将其存储在文件系统中?这个问题的另一个副作用是,我使用的所有ftp程序似乎也限制了您可以查看的文件夹数量,因此我无法轻松访问我生成的文件或文件夹

该网站是用PHP生成的

我需要URL如下所示:
mysite.com/folder/12345678/this-is-a-description

目前我有400000个
12345678
(但唯一的)文件夹,以及400000个(唯一的)
this-is-a-description.php

听起来您需要使用Apache的mod_rewrite或Nginx,具体取决于您的web服务器。 有一个关于如何设置的相当广泛的教程


您还可以使用第三方路由库,例如,它非常广泛,并且已经设置好了所有内容。

是的,这很容易,例如,如果您使用Apache,只需使用htaccess将所有内容重定向到一个文件,然后显示您想要的内容

范例

.htaccess:

RewriteEngine On
RewriteBase /

RewriteRule ^([0-9a-zA-Z-_]*)\/?([0-9a-zA-Z-_]*)\/?([0-9a-zA-Z-_]*)\/?([0-9a-zA-Z-_]*)\/?$ /index.php?a=$1&b=$2&c=$3&%{QUERY_STRING}
这将把mysite.com/folder/12345678/this-is-a-description重定向到

/index.php?a=folder&b=12345678&c=this-is-a-description

然后,在index.php中,您应该检查这些变量($\u REQUEST['a']、$\u REQUEST['b']和$\u REQUEST['c']),并显示所需的内容

您不需要创建那么多文件夹和文件。你们的数据应该在数据库里,对吗? 您只需要配置.htaccess文件来处理URL。这将是很容易做到的,我认为这是你正在寻找的

例如,您可以配置.htaccess文件,以便在url类似于:

mysite.com/folder/12345678/this-is-a-description
数据来自:

mysite.com/index.php?folder=12345678&data=this-is-a-description
你可以很容易地找到解决方法


这将是处理网站数据的正确方法。

创建一个名为.htaccess的文件,其中包含以下代码

重新编写引擎打开
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-s
重写规则^([a-z0-9-.]+)/?$index.php?id=$1[NC,L]

RewriteRule^([a-z0-9-555;]+)/([a-z0-9]+)/?$index.php?id=$1&goto=$2[NC,L]
您是否考虑过将应用程序重构为php框架?通常,您描述的路由在PHP框架和JS框架中都很常见。每个路由都有自己的控制器或操作,在服务器上以JS或PHP运行,然后将其视图数据发送到客户端。例如,如果客户端导航到foo/bar,那么(特别是在Symfony框架中)它将运行barAction,它位于foo控制器中。我可能会忽略提到apache和mod rewrite的注释,而使用php框架。您描述的问题是一个常见的问题,称为路由。php框架将为您处理它。一个流行的是拉雷维尔。