使用Apache PHP重写URL

时间:2013-05-13 18:59:19

标签: php .htaccess rewrite

我有一些存储在数据库中的url,因此不是在.htaccess中为每个url添加重写规则,而是在htaccess中使用以下代码通过以下ReWrite将控件提供给PHP代码Apache中的规则:

RewriteRule ^.*$ ./index.php

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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