0

我有许多存储在数据库中的 url,因此我没有在 .htaccess 中为每个 url 添加重写规则,而是在 htaccess 中使用以下代码通过 Apache 中的以下 ReWrite 规则来控制 PHP 代码:

RewriteRule ^.*$ ./index.php

数据库中提到的一个url,有一个对应的原始url。但是,当我必须通过相应的原始 url 提供从 DB 获取的 url 的内容时,就会出现棘手的情况,而在 .htaccess 中编写了 ReWrite 规则。一种解决方案是对从 PHP 中的 DB 获取的 url 实现与在 Apache 中为原始 url 编写的相同的重写规则,但是,此类原始 url 的数量是巨大的。

因此,如果可能的话,很高兴知道一个解决方案,它可以在 PHP 内部的处理完成后通过 Apache 中提到的 ReWrite 规则执行流程。

4

2 回答 2

1

如果您有权访问主 httpd.conf,则可以使用用 PHP 编写的RewriteMap 。

除此之外,您无法将控制权从 PHP 交还给 Apache,因此 Apache 可以进一步处理它,而不是在同一个请求中。您可以从 PHP 进行 30 倍的重写,让 Apache 处理下一个请求。

于 2013-05-13T19:18:02.707 回答
0

基本重写,而是创建一个 apache 规则将所有 404 错误重定向到一个 php 文件,该文件将是您的 url 处理程序,使用请求的 url 在您的数据库中的 url 列表中进行查找,将原始 url 返回到您的处理程序,从要么进行重定向,要么获取页面内容服务器端/ajax 页面/iframe,无论您喜欢哪个,如果请求的 url 不在您的列表中,则显示您的自定义 404 页面,这会杀死两只鸟。

设置 404 页面: http ://www.404-error-page.com/404-create-a-custom-404-error-page.shtml

于 2013-05-13T19:24:55.810 回答