如何发送不存在显式文件的网页
How to send web pages for which explicit files do not exist
当 URL 对应不存在的 directory/file 时,MediaWiki、Drupal、Wordpress 等 CMS 如何显示正确的页面。
澄清一下,如果我转到 url https://en.wikipedia.org/wiki/Example,维基百科的服务器上没有目录 /wiki/Example,MediaWiki 会根据数据库中的模板和信息等创建页面。我在问 CMS 如何 "Hijacks" 请求那个 directory/file 以便发回它自己的页面而不是 404。
我问的是关于 php 的问题,因为那是我正在使用的东西,也是大多数 CMS 似乎主要基于的东西。
基本概念很简单:
- 使用 custom 404 而不是默认值
- 动态生成内容based on the entered url
Web 服务器(即 Apache、Nginx...)有可能捕获请求 URL 并将它们转换为其他东西,其他一些 URL。最常见的方法是使用放置在站点根目录中的 .htaccess 文件。在某些系统中,以点 (.) 开头的文件默认隐藏,因此您必须在某处启用某些内容才能完全看到它们。
它包含规则(除其他外)如何识别一些路线或一组路线以及如何处理它们。
即你有 "virtual" 路径,如:
/event/32
您将创建一个规则来捕获以“/event/”开头的每个路径,并捕获之后的部分(“32”),而不是打开不存在的目录,它会调用一些脚本,如:
/event.php?event_id=32
因此捕获的参数已作为获取参数 "event_id" 发送到 event.php 脚本。
为此 search/replace 和捕获路径部分使用了正则表达式。
你有很多在线教程如何做到这一点,只是 google 给他们:
https://www.addedbytes.com/blog/url-rewriting-for-beginners
https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules
.....
主要服务器配置位于其他服务器目录中,很可能只有服务器管理员可以访问。但是这个 .htaccess 文件是一种允许 "common users" 进行一些配置更改的方法,这将仅适用于放置该文件的目录及其子文件。
但是你也可以用 .htaccess 文件做很多其他事情,比如发送一些头参数,allow/forbid 访问一些 files/directories,设置一些简单的登录机制(密码保护)和更多...
当 URL 对应不存在的 directory/file 时,MediaWiki、Drupal、Wordpress 等 CMS 如何显示正确的页面。
澄清一下,如果我转到 url https://en.wikipedia.org/wiki/Example,维基百科的服务器上没有目录 /wiki/Example,MediaWiki 会根据数据库中的模板和信息等创建页面。我在问 CMS 如何 "Hijacks" 请求那个 directory/file 以便发回它自己的页面而不是 404。
我问的是关于 php 的问题,因为那是我正在使用的东西,也是大多数 CMS 似乎主要基于的东西。
基本概念很简单:
- 使用 custom 404 而不是默认值
- 动态生成内容based on the entered url
Web 服务器(即 Apache、Nginx...)有可能捕获请求 URL 并将它们转换为其他东西,其他一些 URL。最常见的方法是使用放置在站点根目录中的 .htaccess 文件。在某些系统中,以点 (.) 开头的文件默认隐藏,因此您必须在某处启用某些内容才能完全看到它们。
它包含规则(除其他外)如何识别一些路线或一组路线以及如何处理它们。
即你有 "virtual" 路径,如:
/event/32
您将创建一个规则来捕获以“/event/”开头的每个路径,并捕获之后的部分(“32”),而不是打开不存在的目录,它会调用一些脚本,如:
/event.php?event_id=32
因此捕获的参数已作为获取参数 "event_id" 发送到 event.php 脚本。
为此 search/replace 和捕获路径部分使用了正则表达式。
你有很多在线教程如何做到这一点,只是 google 给他们:
https://www.addedbytes.com/blog/url-rewriting-for-beginners
https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules
.....
主要服务器配置位于其他服务器目录中,很可能只有服务器管理员可以访问。但是这个 .htaccess 文件是一种允许 "common users" 进行一些配置更改的方法,这将仅适用于放置该文件的目录及其子文件。
但是你也可以用 .htaccess 文件做很多其他事情,比如发送一些头参数,allow/forbid 访问一些 files/directories,设置一些简单的登录机制(密码保护)和更多...