2

我在foo.com/articles/中有很多文章

像这样:

foo.com/articles/banana.php
foo.com/articles/strawberry.php

并希望将 SEO 重定向到这样的子目录:

banana.foo.com
strawberry.foo.com

编辑

当我输入 (banana.foo.com) 时,显示 (foo.com/articles/banana.php)。

只显示而不是真正重定向

我无法通过 Cpanel 创建许多子域,因此 (banana.foo.com) 不通过 Cpanel 创建

4

3 回答 3

3

把它放在你的 .htaccess 文件中(不要忘记用你的域名替换“yourdomain”)

Options +FollowSymLinks
Options +SymLinksIfOwnerMatch

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(.*).yourdomain.com$
RewriteRule (.*) yourdomain.com/articles/%1.php [L]

现在当你请求

banana.foo.com

结果将来自

foo.com/articles/banana.php

等等

于 2012-11-12T14:05:29.783 回答
1

在 .htaccess 中,您可以执行以下操作:

RewriteRule ^foo.com/articles/([a-z0-9-]+).php $1.foo.com [PT,L]

您需要安装 mod rewrite,并且需要在 DNS 服务器中设置通配符子域。 http://en.wikipedia.org/wiki/Wildcard_DNS_record

于 2012-11-12T14:03:18.303 回答
1

您可能会执行以下操作:

if (preg_match('#.*/articles/([a-z0-9\-_]+)\.php#i', $_SERVER['PHP_SELF'], $match)) {
    header('Location: http://' . $match[1] . '.foo.com');
    exit;
}

请记住在任何其他输出之前粘贴此代码,否则您将收到错误消息。

或通过.htaccess启用mod_rewriteRewriteEngine ON

RewriteRule ^.*/articles/([a-z0-9\-_]+)\.php$ http://$1.foo.com [R,L]

编辑

反过来是这样的:

if (preg_match('#^http://([a-z0-9\-_]+)\.foo\.com.*$#i', $_SERVER['HTTP_HOST'], $match)) {
    header('Location: http://foo.com/articles/' . $match[1] . '.php');
    exit;
}

并与.htaccess

RewriteCond %{HTTP_HOST} ^([a-z0-9\-_]+).foo.com$
RewriteRule .* http://foo.com/articles/%1.php [R,L]
于 2012-11-12T14:03:25.320 回答