htaccess重定向到修改后的url

时间:2015-09-03 11:31:11

标签: php .htaccess mod-rewrite

我有多个页面用于为Facebook提取元数据,但是它们链接到要向公众隐藏的页面。要看不到的网址是:

test.local/university/test_name

以上链接应重定向到:

test.local/content/university

有什么办法可以用htaccess中的RewriteRule来做到这一点吗?还是需要通过PHP重定向来完成?

道歉,如果重复。

更新:

这就是我解决这个问题的方法。

$domain = $_SERVER["HTTP_HOST"];
$uri = $_SERVER["REQUEST_URI"];
$url = "http://".$domain . $uri;

$parsedURL = parse_url($url);

//    search regex
$regex = "(^\/[\d]+-(.*?)/)";

//    get the matched part of the url
if (strpos($_SERVER['HTTP_REFERER'], 'facebook.com') !== false) {
    if (preg_match($regex, $parsedURL['path'], $matches) === 1) {
        $url = $parsedURL['scheme'] . "://" . $parsedURL['host'] . "/content" . $matches[0];
        header('Location: ' . $url);
    }
}

3 个答案:

答案 0 :(得分:1)

尝试这样的事情......

RewriteEngine On    # Turn on the rewriting engine
RewriteRule    ^test.local/content/university$    path/to/real/page.php    [NC,L]

希望这有帮助。

答案 1 :(得分:0)

您可以在网站根目录.htaccess中使用此RedirectMatch规则:

RedirectMatch 301 ^/(university)/[\w-]+ /content/$1

答案 2 :(得分:0)

为您的输入欢呼。我最后通过PHP完成了这个。

$domain = $_SERVER["HTTP_HOST"];
$uri = $_SERVER["REQUEST_URI"];
$url = "http://".$domain . $uri;

$parsedURL = parse_url($url);

//    search regex
$regex = "(^\/[\d]+-(.*?)/)";

//    get the matched part of the url
if (strpos($_SERVER['HTTP_REFERER'], 'facebook.com') !== false) {
    if (preg_match($regex, $parsedURL['path'], $matches) === 1) {
        $url = $parsedURL['scheme'] . "://" . $parsedURL['host'] . "/content" . $matches[0];
        header('Location: ' . $url);
    }
}