当一个URL用于不存在的目录/文件时,如MediaWiki,Drupal,Wordpress等CMS如何显示正确的页面。
澄清一下,如果我转到网址https://en.wikipedia.org/wiki/Example,维基百科的服务器/维基/示例上没有目录,而是MediaWiki从数据库中的模板和信息等创建页面。我在问CMS是怎么做的“劫持”该目录/文件的请求,以便将其自己的页面发回而不是404.
我问到关于php的问题,这就是我正在使用的内容以及大多数CMS似乎主要基于的内容。
答案 0 :(得分:0)
基本概念非常简单:
答案 1 :(得分:0)
Web服务器(即Apache,Nginx ...)有可能捕获请求的URL并将其转换为其他URL,其他URL。最常见的方法是使用放置在站点根目录中的.htaccess文件。在某些系统中,默认情况下会隐藏以点(“。”)开头的文件,因此您必须启用某些内容才能看到它们。
它包含规则(以及其他内容)如何识别某些路线或路线集以及如何处理它们。
即。你有“虚拟”路径,如:
/event/32
您将创建一个规则来捕获以“/ event /”开头的每个路径,并在此之后捕获部分(“32”)而不是打开不存在的目录,它将调用一些脚本,如:
/event.php?event_id=32
因此捕获的参数已作为get参数“event_id”发送到event.php脚本。
对于此搜索/替换和捕获路径部分,使用正则表达式。
你有许多在线教程如何做到这一点,只为他们谷歌:
https://www.addedbytes.com/blog/url-rewriting-for-beginners
https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules
...
主服务器配置位于其他服务器目录中,很可能只能由服务器管理员访问。但是这个.htaccess文件是一种允许“普通用户”进行一些配置更改的方法,它只适用于放置该文件的目录及其子目录。
但你也可以用.htaccess文件做很多其他的事情,即发送一些头参数,允许/禁止访问某些文件/目录,设置一些简单的登录机制(密码保护)等等...... / p>