此处有关于我的问题的说明
我已经从这条路径移动了网站
http://www.site.com/any-thing-here-workfine
像这样的子域名
http://portal.site.com/any-thing-here-workfine
但到目前为止,谷歌已经使用了我以前的链接,所有这些链接都已关闭
所以我现在正在努力将此链接从www移动到子域名(如果此页面返回未发现)
平均数
我在Google中的链接仍然是
http://www.site.com/any-thing-here-workfine此页面未发现
所以我想将它重定向到相同的网址,但是像thia一样
http://portal.site.com/any-thing-here-workfine
我该怎么做?
答案 0 :(得分:4)
这对于mod_rewrite来说非常简单
RewriteEngine On
RewriteCond %{HTTP_HOST} =www.site.com [NC]
RewriteRule ^/?(.*) http://portal.site.com/$1 [R=301]
这将重定向一切。但是,如果您在www.site.com上发布一些新内容并且您不希望它重定向怎么办?
如果您只是在www.site.com上拥有静态内容,那么这很简单。只需为不存在的文件/文件夹添加“404”测试。
RewriteEngine On
RewriteCond %{HTTP_HOST} =www.site.com [NC]
# 404 test -- file/folder exists?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*) http://portal.site.com/$1 [R=301]
但是,如果您在www.site.com上有一些新的“虚拟”URL并不直接与文件系统上的文件对应,那么您必须弄清楚如何从重定向规则中过滤掉这些(否则你将在404测试中得到误报。比如说,www.site.com上的虚拟内容,不应重定向,所有都以/ newsite / ...开头,那么你最终会得到这样的结果:
RewriteEngine On
RewriteCond %{HTTP_HOST} =www.site.com [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/?newsite/
RewriteRule ^/?(.*) http://portal.site.com/$1 [R=301]