是否可以在302 .htaccess RedirectMatch之后获取原始URL?

时间:2017-12-07 12:52:58

标签: php apache .htaccess http redirect

大家好。我开始编写自己的“URL缩短器”。基本思路是使用example.com/12345重定向到另一个URL。这种“匹配”是通过使用.htaccess将内容重定向到一个脚本(与我们现在无关)来完成的。

我的.htaccess目前看起来像这样:

RedirectMatch 302 ^/\w{5}$ /redir.php

重定向匹配任何正好为5的字符串,并将其发送到我的PHP脚本,在该脚本中实际重定向到扩展的URL。唯一的问题是我无法找到一种正确的方法来获取原始网址,将匹配的网址添加到变量中。

作为旁注,整个事情发生在我设置的VPS上,知识很少,所以如果这个问题可以来自缺少的配置($ _SERVER ['HTTP_REFERER']不起作用),然后期望我的配置不是100%正确和按标准。

编辑:从RedirectMatch更改为RewriteRule,仍然无法正常工作。

RewriteRule ^\w{5}$ /redir.php [R,L]

1 个答案:

答案 0 :(得分:1)

您可以使用以下规则:

RewriteRule ^(\w{5})$ /redir.php?redir=$1 [R,L]

这会将5个字母的字符串作为querystring param redir发送。您可以在redir.php中访问以下内容:

$_GET['redir']

修改或者@LawrenceCherone建议你可以在redir.php中使用$_SERVER['REQUEST_URI']。但为此,您必须在NC中使用.htaccess标记,而不是:

RewriteRule ^(\w{5})$ /redir.php [NC,L]