我在 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创建
答案 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_rewrite
和RewriteEngine 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]