我希望所有传入流量都通过PHP脚本传输,只需将脚本上传到服务器并在我的.htaccess中添加几行即可。是否 - 或者类似 - 可能吗?基于PHP脚本结果的.htaccess重定向可以吗?
例如为:
- 我访问的网页。
- PHP脚本获取整个URL,并将重定向目标URL返回给.htaccess。
- 仅当URL脚本已被PHP脚本修改时,.htaccess才会重定向。
我希望所有传入流量都通过PHP脚本传输,只需将脚本上传到服务器并在我的.htaccess中添加几行即可。是否 - 或者类似 - 可能吗?基于PHP脚本结果的.htaccess重定向可以吗?
例如为:
.htaccess
在PHP
脚本之前被解雇。查看.htaccess
作为您的Web服务器(Apache)设置的扩展。您将无法“发送”.htaccess
,因为它是服务器的配置文件,而不是引擎本身。 Conversly你可以使用PHP
的原生header redirect
PHP
header('Location: http://www.example.com/');
非常类似的东西可以使用Apache的mod_rewrite更传统的规则来完成。或者正如你在对话中注意到@ Zak的回答可能使用了内部重定向。
下面是一个例子的序列:
http://myhost.com/my_area/my_file.jpg
).htaccess
被配置为使所有请求/myarea
(甚至/
)的PHP脚本。 (例如handle-url.php
)(Example code)handle-url.php
逻辑现在可以做任何的几件事情:
header("Location: URL)
方法将用户重定向到任何URL作为由@Zak提及(例如http://myhost.com/file_area/my_file.jpg
)看看在mod_rewrite
先进示范页面。根据你需要做什么,可能有其他选择。
例如,On-the-fly Content-Regeneration可能会有所帮助。如可能FallbackResource
。
我需要一个解决方案,其中Apache使最后的重定向,而不是PHP。我有很多现有的RewriteRules,我不想用PHP实现。 (我想添加的新逻辑对于Apache来说太复杂了,所以在这种情况下我需要PHP。) –
hmm。请参阅:http://stackoverflow.com/a/1390754/6287702有可能这样的虚拟重定向(即缺少ptoto +主机)可以通过mod_rewite触发子请求。目前无法测试此功能。最糟糕的情况下,你可以代理你的PHP脚本的后面,并通过答复。但是越来越丑陋了。 – Wafflecode
也许我可以让Apache做一个子请求,这样一来,它首先会对脚本进行内部重定向,然后根据脚本的返回值(如果需要)进行外部重定向 - 可以存储在服务器端 - 或环境变量。这是不可能的吗? –
RewriteMap - 我不太了解 - 似乎也很有希望。除了它不能在.htaccess上下文中使用的事实。 –
这个也很有趣,我会详细阅读它:_%{LA-F:variable}可以用来执行一个内部的(基于文件名的)子请求,以确定变量的最终值。大多数情况下,这与上面的LA-U相同。(来源:[httpd.apache.org](http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond)) –