将特殊PHP文件重定向到子域

时间:2012-11-12 13:52:11

标签: php .htaccess

我在 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创建

3 个答案:

答案 0 :(得分: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

等等

答案 1 :(得分:1)

在.htaccess中,您可以使用以下内容执行此操作:

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

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

答案 2 :(得分: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]