.htacess来自旧域的现有URL,重定向到新域上的index.php

时间:2017-04-24 11:10:18

标签: apache .htaccess redirect mod-rewrite typo3

问题

我在新域名上有一个新的TYPO3网站。旧网站的所有重要页面都指向他们的新对应部分,我在.htaccess中添加了单独的301重定向。那些工作正常!

然而,有些页面与旧网站具有完全相同的URL,我无法为(无限循环)添加单独的重定向。例如/ contact /。当我访问http://www.example-old.com/contact/页面时,只需重定向到/index.php。为什么呢?

收藏

  • 所有非www应重定向到www (作品)
  • 应将其他域重定向到新的(工作)
  • 旧网站的引荐应该重定向到新域上的相同网址,除非手动301重定向到位。 (不起作用)

当前设置

这是我正在使用的.htacess代码段:

<IfModule mod_rewrite.c>

# Enable URL rewriting

RewriteEngine On
RewriteBase /

# Point old domain to new domain

RewriteCond %{HTTP_HOST} ^example-old\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^example-new\.com$ [NC]
RewriteRule ^(.*) http://www.example-new.com/$1 [R=301,L]

# Point idle domains to new domain

RewriteCond %{HTTP_HOST} ^/?(?:www\.)?example-01.nl [OR]
RewriteCond %{HTTP_HOST} ^/?(?:www\.)?example-02.de [OR]
RewriteCond %{HTTP_HOST} ^/?(?:www\.)?example-03.eu [OR]
RewriteCond %{HTTP_HOST} ^/?(?:www\.)?example-04.net [OR]
RewriteCond %{HTTP_HOST} ^/?(?:www\.)?example-05.org
RewriteRule ^(.*)$ http://www.example-new.com/$1 [R=301,L]  

</IfModule>

我尝试过每一种我能找到的组合尝试让它发挥作用。这里可能出现什么问题?

很多Thanx!

2 个答案:

答案 0 :(得分:0)

尝试删除前导“/?”内部的“?:”也从你的http主机条件中逃脱了最后一个点:

RewriteCond %{HTTP_HOST} ^(www\.)?example-01\.nl$ [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?example-02\.de$ [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?example-03\.eu$ [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?example-04\.net$ [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?example-05\.org$
RewriteRule ^(.*)$ http://www.example-new.com/$1 [R=301,L] 

答案 1 :(得分:0)

如果从第一个RewriteCond中删除^,则对旧域的所有请求都将重定向到新域。

如果您希望特定重定向具有优先级,请确保将它们放在此重定向之前。

# Point old domain to new domain

RewriteCond %{HTTP_HOST} example-old\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^example-new\.com$ [NC]
RewriteRule ^(.*) http://www.example-new.com/$1 [R=301,L]