我被困住了。我对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 /
答案 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]