我有多个页面用于为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);
}
}
答案 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);
}
}