我们有一个现有的网站,我们称之为ourdomain.com。我们从正在关闭的网站上移动内容,我们称之为legacydomain.com。我们将服务器上的遗留域指向/ public_html /文件夹。
我需要的是一个.htaccess,会将legacydomain.com或legacydomain / anything-重定向到mydomain.com/legacydomain/,并且不会在网址上附加任何其他内容。
但是,我还需要一些特定的URL来重定向到某些目的地,并且它们并不真正遵循模式。例如:
legacydomain.com/something.html到ourdomain.com/legacydomain/something.html
legacydomain.com/another.html到ourdomain.com/legacydomain/folder/another.html
这就是我的尝试:
RewriteCond %{HTTP_HOST} ^www\.legacydomain\.com$ [NC]
RewriteRule (.*) http://www.ourdomain.com/legacydomain/$1 [R=301,L]
Redirect 301 /something.html http://www.ourdomain.com/legacydomain/another.html
它主要起作用,但如果我访问legacydomain.com/anything-它甚至没有尝试重写,它只是保持域相同并给出404.而且我也有一种感觉,即使它确实工作,像legacydomain.com/anything-here/more-stuff这样的东西会被重写为mydomain.com/legacydomain/anything-here/more-stuff,这是我不想要的。
.htaccess中只有其他东西是将非www重写为www,以及标准的WordPress内容。任何指导将不胜感激。上面的所有内容都应该在示例前面有一个http://和www,但它不会让我发布那么多“链接”。
答案 0 :(得分:1)
对于每个特定的重写,您需要两行,如下所示。根据您现有的配置,如果这不起作用,您可能需要在something.html前面的RewriteRule的开头添加斜杠。
RewriteCond %{HTTP_HOST} legacydomain.com
RewriteRule something.html http://ourdomain.com/legacydomain/something.html [R=301,L]
然后你会使用一个全能的东西。
RewriteCond %{HTTP_HOST} legacydomain.com
RewriteRule (.*) http://ourdomain.com/legacydomain/ [R=301,L]
答案 1 :(得分:0)
就个人而言,我会选择不使用mod_rewrite的最简单的解决方案。首先,只需将特定页面重定向到他们需要去的地方。
Redirect 301 /something.html http://ourdomain.com/legacydomain/something.html
Redirect 301 /another.html http://ourdomain.com/legacydomain/another.html
然后,只需将其他所有内容重定向到基本网址即可。
RedirectMatch 301 (.*) http://ourdomain.com/legacydomain/
这些必须放在RewriteEngine on
语句之前的.htaccess文件中。