可以基于PHP脚本结果进行.htaccess重定向


Can .htaccess redirect based on a PHP script result?

我希望所有传入的流量都能通过PHP脚本通过隧道传输,只需将脚本上传到服务器并在我的.htaccess中添加几行即可。这可能吗?

例如:

  1. 我访问了一个页面
  2. PHP脚本获取整个URL,并将重定向目标URL返回给.htaccess
  3. 只有当PHP脚本修改了URL时,.htaccess才会重定向

使用Apache的mod_rewrite更传统的规则可以完成类似的操作。或者,正如你在对话中提到的,@Zak的回答可能使用了内部重定向。

以下是一个示例序列:

  1. 用户访问页面(例如http://myhost.com/my_area/my_file.jpg
  2. .htaccess被配置为将/myarea(甚至/)的所有请求传递给php脚本。(例如handle-url.php)(示例代码)
  3. handle-url.php中的逻辑现在可以做以下几件事中的任何一件:
    1. 返回错误
    2. 使用@Zak提到的header("Location: URL)方法将用户重定向到任何url(例如http://myhost.com/file_area/my_file.jpg
    3. 直接从磁盘读取文件并将数据返回给用户。(示例代码)

看看mod_rewrite的高级示例页面。根据你到底需要做什么,可能还有其他选择。

例如,动态内容再生可能会有所帮助。如FallbackResource

.htaccessPHP脚本之前激发。将.htaccess视为web服务器(Apache)设置的扩展。您将无法将某些内容"发送"到.htaccess,因为它是服务器的配置文件,而不是引擎本身。相反,您可以使用PHP的原生header redirect

PHP

header('Location: http://www.example.com/');