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