.htaccess 需要帮助

.htaccess 需要帮助,.htaccess,.htaccess,我们有一个现有的网站,我们叫它ourdomain.com。我们将内容从一个即将关闭的网站转移过来,我们称之为legacydomain.com。我们将服务器上的遗留域指向/public\u html/文件夹 我需要的是一个.htaccess,它将把legacydomain.com或legacydomain/此处的任何内容重定向到ourdomain.com/legacydomain/,而不在URL中附加任何其他内容 然而,我还需要一些特定的URL来重定向到特定的目的地,而它们实际上并不遵循某种模式。

我们有一个现有的网站,我们叫它ourdomain.com。我们将内容从一个即将关闭的网站转移过来,我们称之为legacydomain.com。我们将服务器上的遗留域指向/public\u html/文件夹

我需要的是一个.htaccess,它将把legacydomain.com或legacydomain/此处的任何内容重定向到ourdomain.com/legacydomain/,而不在URL中附加任何其他内容

然而,我还需要一些特定的URL来重定向到特定的目的地,而它们实际上并不遵循某种模式。例如:

legacydomain.com/something.html至ourdomain.com/legacydomain/something.html

legacydomain.com/other.html至ourdomain.com/legacydomain/folder/other.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/anywhere,它甚至不尝试重写,它只是保持域不变,并给出404。而且我有一种感觉,即使它真的起作用了,像legacydomain.com/anything-here/more-stuff这样的东西也会被重写为ourdomain.com/legacydomain/anythine-here/more-stuff,这是我不想要的


htaccess中唯一的另一件事是将非www重写为www,以及标准的WordPress内容。任何指导都将不胜感激。上面的所有内容都应该在前面有一个http://和www作为示例,但它不允许我发布那么多“链接”。

就我个人而言,我会选择不使用mod_rewrite的最简单解决方案。首先,只需将特定页面重定向到它们需要去的地方

Redirect 301 /something.html http://ourdomain.com/legacydomain/something.html
Redirect 301 /another.html http://ourdomain.com/legacydomain/another.html
然后,只需将所有其他内容重定向到基本URL即可

RedirectMatch 301 (.*) http://ourdomain.com/legacydomain/

这些必须放在.htaccess文件中,然后才能执行
重写引擎on
语句。

就我个人而言,我会选择不使用mod_rewrite的最简单解决方案。首先,只需将特定页面重定向到它们需要去的地方

Redirect 301 /something.html http://ourdomain.com/legacydomain/something.html
Redirect 301 /another.html http://ourdomain.com/legacydomain/another.html
然后,只需将所有其他内容重定向到基本URL即可

RedirectMatch 301 (.*) http://ourdomain.com/legacydomain/

这些文件必须放在.htaccess文件中,在
重写引擎on
语句之前。

对于每个特定的重写,您需要两行,如下所示。根据您现有的配置,如果不起作用,您可能需要在RewriteRule的开头在something.html前面添加斜杠

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]

对于每个特定的重写,您需要两行代码,如下所示。根据您现有的配置,如果不起作用,您可能需要在RewriteRule的开头在something.html前面添加斜杠

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]

唯一的问题是两个域指向同一目录并加载相同的.htaccess文件。因此,您的重定向匹配行也将匹配,并尝试将其重写为。有什么建议吗?也许当我在cPanel中创建legacydomain.com作为一个插件域时,我应该给它自己的目录,这样它就可以拥有自己的.htaccess,而不是指向public_html?谢谢。唯一的问题是两个域指向同一目录并加载相同的.htaccess文件。因此,您的重定向匹配行也将匹配,并尝试将其重写为。有什么建议吗?也许当我在cPanel中创建legacydomain.com作为一个插件域时,我应该给它自己的目录,这样它就可以拥有自己的.htaccess,而不是指向public_html?谢谢。不幸的是,这对我不起作用。在您的示例中,访问legacydomain.com会正确重定向,但legacydomain.com/something.html不会重定向并给我一个404(尝试使用或不使用前导斜杠)。catchall也不起作用,因为访问legacydomain.com/anythingelse也不会被重写。真的很奇怪,就像我在浏览器中给URL加了一个斜杠一样,不管发生什么,RewriteCond都不会匹配任何东西,但是你所拥有的看起来是正确的。有可能发生这种情况的原因吗?我不知道这是否是WordPress的事情。好吧,所以我把你的建议移到WordPress规则之上,一切都很好!!我真是太感谢你了!!不幸的是,这对我不起作用。在您的示例中,访问legacydomain.com会正确重定向,但legacydomain.com/something.html不会重定向并给我一个404(尝试使用或不使用前导斜杠)。catchall也不起作用,因为访问legacydomain.com/anythingelse也不会被重写。真的很奇怪,就像我在浏览器中给URL加了一个斜杠一样,不管发生什么,RewriteCond都不会匹配任何东西,但是你所拥有的看起来是正确的。有可能发生这种情况的原因吗?我不知道这是否是WordPress的事情。好吧,所以我把你的建议移到WordPress规则之上,一切都很好!!我真是太感谢你了!!