我正在尝试将旧域中的所有网页转到具有相同文件结构的新域上的相应网页。我使用以下代码但问题是旧网页转到索引网页而不是相应的网页。基本上,我认为捕获其余网址的(。*)不会在重写规则中以$ 1显示?
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com(.*) [NC]
RewriteRule ^ http://www.newdomain.com$1 [R=301,L]
答案 0 :(得分:1)
如果您使用$1
,则需要使用()
在RewriteRule中捕获一些内容。
试试这个:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
这会将http://olddomain.com/page.php
重定向到http://www.newdomain.com/page.php
。
此外,如果可能有多个olddomain
s,请重定向任何不在newdomain
的网址:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^(www\.)?newdomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
这会将http://notnewdomain.com/page.php
重定向到http://www.newdomain.com/page.php
。
修改强>
以下是我在http://htaccess.madewithlove.be的测试的屏幕截图: