301重定向到新域并同时重定向各个旧页面

时间:2013-10-17 07:19:37

标签: regex apache .htaccess mod-rewrite concrete5

我希望你能帮我解决这个301问题。

简介

我刚刚发布了一个带有新网址的网站重新设计。旧网页的网址如下: www.domain.dk/Default.aspx?ID=66 。新网站的网址如下所示: www.domain.com/contact

所以我不想将所有这些旧网址重定向到新网址,因此我不会保留旧网址,也不能应用一般规则。

这只是简单的301重定向,但同时旧域指向一个新域,这就是事情变得肮脏的地方,我想。旧域名是www.domain.dk,但我不想将所有流量转移到新域名www.domain.com,同时我不想进行所有301个重定向。

问题

当我点击Google中的链接 www.domain.dk/Default.aspx?ID=66 时,我会在浏览器中获取此网址:www.domain.comindex.php / ?ID = 66

在其他链接上我得到 www.domain.comdefault.aspx /?ID = 2

那么重定向到新域的工作正常吗?但个人重定向根本不适用。

代码

此代码将从运行apache的服务器上的.htaccess文件中粘贴。

第一个位由Concrete5 CMS自动生成,以制作漂亮的URL。

# -- concrete5 urls start --
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
</IfModule>
# -- concrete5 urls end --

这是我发现301将所有流量重定向到的网址的代码,使用www.esvagt.com到www.esvagt.com

## --- 301 Redirects --- ##

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301,L]

这只是手动301重定向之一。

## General - Redirects ##

redirect 301 /Default.aspx?ID=66 http://www.domain.com/contact/contact-us

提前致谢。如果您需要更多信息,我很乐意提供。 关于在.htaccess中编写代码,我有知识,所以我很无能为力。我希望你能提供帮助。 :)

2 个答案:

答案 0 :(得分:1)

  1. 避免混用mod_rewritemod_alias规则。
  2. 规则的排序也非常重要,因此首先要有301个规则,然后才能获得所有控制器规则
  3. 将此代码用于301重定向:

    ## --- 301 Redirects --- ##
    
    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.dk$ [NC]
    RewriteRule ^ http://www.domain.com%{REQUEST_URI} [R=301,L]
    
    ## General - Redirects ##
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+Default\.aspx\?ID=66[&\s] [NC]
    RewriteRule ^ http://www.domain.com/contact/contact-us? [R=301,L]
    
    # -- concrete5 urls start --
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}/index.html !-f
    RewriteCond %{REQUEST_FILENAME}/index.php !-f
    RewriteRule . index.php [L]
    </IfModule>
    # -- concrete5 urls end --
    

答案 1 :(得分:0)

RewriteRule www.domain.dk/Default.aspx?ID=66 domain.com/contact/contact-us [R=301,L]

如果您想自动重定向所有帖子:

RewriteRule /Artical.aspx?ID=(.+?) domain.com/article-title-$1.html [R=301,L]
or
RewriteRule /Artical.aspx?ID=(.+?) domain.com/Post.aspx?ID=$1 [R=301,L]

然后动态网址Artical.aspx?ID=20将重定向到http://www.domain.com/article-title-30.html, 我已成功将此方法应用于我的博客http://downloadapp.info