![htaccess 将所有 URL(包括图像 href)从一个域重写到另一个域](https://linux22.com/image/567494/htaccess%20%E5%B0%86%E6%89%80%E6%9C%89%20URL%EF%BC%88%E5%8C%85%E6%8B%AC%E5%9B%BE%E5%83%8F%20href%EF%BC%89%E4%BB%8E%E4%B8%80%E4%B8%AA%E5%9F%9F%E9%87%8D%E5%86%99%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%9F%9F.png)
我有一个 wordpress 博客,位于一个子目录中,我最近将其从 .com 迁移到 .co.uk(myurlstudio.com/blog 到 myurl.co.uk/blog)。问题是许多帖子中都有图片,而且它们的 href 仍然指向旧域名,因此它们无法与当前的 htaccess 设置配合使用。图片指向http://www.myurlstudio.com/blog/wp-content/uploads/image.jpg,当我想让他们指出http://www.myurl.co.uk/blog/wp-content/uploads/image.jpg. 因此我需要在 htaccess 中更改的是'http://www.myurlstudio.com/blog' 到 'http://www.myurl.co.uk/blog'无论它出现在哪里。
当前的 htaccess 看起来像这样(它是 concrete5 的标准 URL 重写方案):
# -- concrete5 urls start --
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?myurlstudio.com$
RewriteRule ^(.*)$ http://www.myurl.co.uk/$1 [L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
# -- concrete5 urls end --
如您所见,myurlstudio.com 已被重定向,但文档内的 URL 似乎并未被重写。
任何帮助将非常感激!
答案1
如果您有权访问旧主机(从评论来看您确实可以访问),则当您的规则放在旧站点的文档根目录中时应该可以工作:
RewriteCond %{HTTP_HOST} ^(www.)?myurlstudio.com$
RewriteRule ^(.*)$ http://www.myurl.co.uk/$1 [L,R=301,QSA]
但这只会重定向旧请求。如果旧域名最终会过期,您仍然需要更新网站以引用新域名。