我需要一个.htaccess规则来重写从example.com/xyz到xyz.example.com的网址

时间:2012-11-21 22:11:39

标签: apache .htaccess mod-rewrite

我目前有一个在子文件夹中运行的多个应用程序,我想移动到子域并用新网站替换当前站点,但仍然允许在前一个URL找到旧的应用程序,例如

当前:mysite.com/application/page1.aspx

我想要做的是将此应用程序移至application.mysite.com/page1.aspx

我需要一个.htaccess重写规则来做两件事

  1. 仍然会允许某人转到mysite.com/application/page1.aspx 并进入应用程序
  2. 将页面上显示的URL保持为 mysite.com/application/page1.aspx隐藏了它的一个事实 子域。
  3. 隐藏子域名并不是那么重要,因为它让Google很高兴在这些页面上找到内容。

    注意:这个新的主站点是一个wordpress站点。

    这就是我现在在htaccess中所拥有的东西


    <IfModule mod_rewrite.c>
    
    RewriteEngine On
    RewriteBase /foldername/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{HTTP_HOST} mysite.com/foldername$ [NC]
    RewriteRule ^adminpgm/(.*)$ http://SUBDOMAIN.mysite.com/adminpgm/$1 [R=301,L]
    
    RewriteRule . /foldername/index.php [L]
    
    </IfModule>
    

1 个答案:

答案 0 :(得分:0)

因为Wordpress也使用带子文件夹的网址,所以自动化很难(如果你使用漂亮的网址,每个帖子,页面,类别等都可以显示为子文件夹)。

如果你确切知道你正在移动哪些应用程序,你可以这样做:

RewriteCond %{REQUEST_URI} ^/(application1|application2|another-one|application4)
RewriteRule ^([^/]*)/(.*)$ http://$1.domain.com/$2 [R=301,L]

只需将所有应用程序文件夹名称放在第一个规则中,用管道(|

分隔

关于SEO: “隐藏子域名并不是那么重要,因为谷歌很乐意在那些一直以来的页面上找到内容。”

只要您使用[R = 301]标记重定向,Google就会知道内容已移动且完全没有问题。随着时间的推移,谷歌将开始在搜索结果中显示子域而不是旧的URL,我认为这可能是永远支持旧网址的首选。