2

我很想知道是否有办法让 PHP 页面或其他一些服务器端逻辑拦截 URL,例如,如果查询 URL “www.mysite.com/about/mission_statement”但我没有“about/mission_statement”的页面,我可以从“some/other/folder/with/pages”中提供内容。

有人知道这是否可能,还是我必须确保我有一个可用于我希望处理的每个 url 地址的页面?

4

2 回答 2

6

您不能直接在 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 具有类似的功能。

于 2012-10-02T17:24:27.123 回答
2

再次假设您使用 Apache,那么您有很多选择:

对特定页面/内容使用重写规则(在另一个答案中指定)或在 .htaccess 文件中包含一行,将任何不存在的请求(404)重定向到您选择的特定位置/文件。

这通常是在您的 docroot 目录或其他选择的目录中使用.htaccess文件中的以下代码来调用的:

ErrorDocument 404 /whatever/path/to/file.php

如果您在 PHP 中使用由 ID 或其他动态值键入的动态页面,例如:

http://www.somedomain.com/page.php?id=4

那么如果内容不匹配或不存在,您需要创建一个重定向到您选择的页面的函数。

于 2012-10-02T17:42:12.787 回答