如何在转发POST数据时制作简单的.htaccess内部重定向Catch All脚本?

问题描述 投票:0回答:2

我只想捕获所有请求并将其内部转发到我的catchall页面,所有POST数据都保持不变

抓住所有页面:http://www.mydomain.com/addons/redirect/catch-all.php

我已经尝试了这么多组合,但是如果我指定了多个catch-all.php,我的服务器不希望在内部重定向

# Internally redirect all pages to "Catch" page
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) /addons/redirect/catch-all.php [L]

另外,我需要[L]还是内部重定向无效?

然后,我将使用什么PHP代码来获取POST数据,使用它,最后PHP将页面重定向到最初请求的页面

是否可以通过使用$ _POST ['variable_name']正常完成;还是别的什么?然后,我将如何调用最初请求的页面,所以我可以告诉PHP标题位置将它们指向该页面?

谢谢!

更新:

哈病了,没关系。条件是否有效。这是我的代码:

# Internally redirect all pages to "Catch" page
Options +FollowSymLinks
RewriteEngine on

RewriteCond %{REQUEST_URI} !^/robots.txt$ 
RewriteCond %{REQUEST_URI} !\.(gif¦jpe?g¦png¦css¦js¦pdf¦doc¦xml)$

RewriteCond %{REQUEST_URI} !^/addons/redirect/catch-all\.php$
RewriteRule (.*)$ /addons/redirect/catch-all.php?q=$1 [L]

谢谢你们的灵感!现在是时候让PHP工作了......

php .htaccess post redirect internal
2个回答
0
投票

我认为你所拥有的将重定向图像和.js文件的请求。此外,任何PHP header()重定向将再次直接进入RewriteRule,不是吗?如果您希望在运行请求的页面之前在每个页面上处理一些代码,并且所请求的页面实际存在,为什么不只是有一个包含在所有页面中的头文件?然后头文件可以包含您要运行的catch-all代码(或者包含它的include())。不需要RewriteRule。


0
投票

L是最后一个,或者在这里停止。没关系。

# Internally redirect all pages to "Catch" page
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) /addons/redirect/catch-all.php?q=$1 [L]

这会将原始位置存储为$ _GET ['q']

通常处理你的$ _POST东西,注意不要输出任何东西,然后:

header('Location: ' . $_GET['q'],true,302);

302表示临时重定向。

没有经过测试,但我做了类似于重定向登录的事情。

编辑:嗯..这将导致循环原样。您将需要一些其他RewriteRule来了解您何时已经重定向用户。也许附加?q =重定向到原始网址并将其用作另一个RewriteRule的停靠点?

我想您也可以使用符号链接到您的Web根目录来区分它们。

/ var / www / html / blah链接回/ var / www / html

然后在捕获帖子后,您将所有用户发送到/ blah。相同的内容,两条路径,一条可直接访问,一条只能通过您的捕获全部。

© www.soinside.com 2019 - 2024. All rights reserved.