htaccess重定向 - 旧域到链接结构略有变化的新域

时间:2011-09-16 00:17:10

标签: apache .htaccess mod-rewrite redirect

我被困住了。我对htaccess了解不多,我只是在扯着它。有人可以查看代码并告诉我它有什么问题。我只是想将一个旧网站重定向到一个新网站,唯一的变化是域,一个在旧/新页面之间匹配的变量,以及一个添加到永久链接结构的单词。

以下是我到目前为止尝试过的一些变化:

Options +FolowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^.*domain.com/matchingword1-(.*)-matchingword2-matchingword3/ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/matchingword1-$1-matchingword2-differentword-matchingword3/ [R=301,L]

Options +FolowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^.*domain.com/matchingword1-(.*)-matchingword2-matchingword3/ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/matchingword1-%1-matchingword2-differentword-matchingword3/ [R=301,L]

RewriteCond %{QUERY_STRING}  ^$
RewriteRule ^domain\.com/matchingword1-(.*)-matchingword2-matchingword3/$ http://www.newdomain.com/matchingword1-\$1-matchingword2-differentword-matchingword3/\ [R=301? [R=301,NE,NC]

新域上的(。*)部分与$ 1完全相同,但固定链接略有不同。永久链接的部分是(。*)将是来自多个单词和数字的任何内容。

例如:matchingword1-this-page-is-1st-matchingword2-matchingword3 / redirects to newdomain dot com / matchingword1-this-page-is-1st-matchingword2-differentword-matchingword3 /

1 个答案:

答案 0 :(得分:1)

HTTP_HOST的重写条件是请求的“Host:”标头中传递的内容,该标头仅包含主机(在某些情况下还包含端口)。请求URI不是HTTP_HOST的一部分。尝试这样的事情:

RewriteCond %{HTTP_HOST} ^.*domain.com [NC]
RewriteRule ^matchingword1-(.*)-matchingword2-matchingword3/ http://www.newdomain.com/matchingword1-$1-matchingword2-differentword-matchingword3/ [R=301,L]

最后一组看起来根本不起作用。

编辑:评论不会让我插入代码

如果要重定向一切,则应使用mod_alias'RedirectMatch:

RedirectMatch ^(.*)$ http://www.newdomain.com/$1

如果您正在为同一个apache实例上的目录提供服务(例如,domain.com和newdomain.com实际上是同一服务器从同一目录服务),那么您需要重写。像这样:

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