0

我只想捕获所有请求并在内部将它们转发到我的全部页面,所有 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 工作了……

4

2 回答 2

0

我认为您所拥有的也会重定向对图像和 .js 文件的请求。此外,任何 PHPheader()重定向都会再次直接进入 RewriteRule,不是吗?如果您希望在运行所请求的页面之前在每个页面上处理一些代码,并且所请求的页面确实存在,那么为什么不在所有页面中包含一个头文件呢?然后头文件可以包含您想要运行的包罗万象的代码(或它的 include())。不需要 RewriteRule。

于 2009-10-14T00:29:55.350 回答
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 来知道您何时已经重定向了用户。也许在原始 url 上附加 ?q=redirected 并将其用作另一个 RewriteRule 的停止?

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

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

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

于 2009-10-14T00:43:47.053 回答