我很想知道是否有办法让 PHP 页面或其他一些服务器端逻辑拦截 URL,例如,如果查询 URL “www.mysite.com/about/mission_statement”但我没有“about/mission_statement”的页面,我可以从“some/other/folder/with/pages”中提供内容。
有人知道这是否可能,还是我必须确保我有一个可用于我希望处理的每个 url 地址的页面?
您不能直接在 PHP 中执行此操作,因为调用 PHP 页面是为了处理给定的 URL,但您可以在 Web 服务器中执行此操作。
假设 Apache 看看 URL 重写
http://httpd.apache.org/docs/2.2/rewrite/
特别是对于您的情况,子主题
http://httpd.apache.org/docs/2.2/rewrite/remapping.html
是相关的。
IIS 具有类似的功能。
再次假设您使用 Apache,那么您有很多选择:
对特定页面/内容使用重写规则(在另一个答案中指定)或在 .htaccess 文件中包含一行,将任何不存在的请求(404)重定向到您选择的特定位置/文件。
这通常是在您的 docroot 目录或其他选择的目录中使用.htaccess文件中的以下代码来调用的:
ErrorDocument 404 /whatever/path/to/file.php
如果您在 PHP 中使用由 ID 或其他动态值键入的动态页面,例如:
http://www.somedomain.com/page.php?id=4
那么如果内容不匹配或不存在,您需要创建一个重定向到您选择的页面的函数。