2013-07-06 42 views
1

使用.htaccess文件时,如何在加载page A时加载page B?我不希望URL改变,它应该仍然说page Ahtaccess加载页面B,而不是页面A,无需重定向

例如:用户负载www.mysite.com/contact并得到www.mysite.com/contact-us

优选的结果,我怎样才能重定向多个URL到同一个地方?如.com/A,.com/B,.com/C全部加载的内容为.com/d。有没有办法将许多这些组合在一起(与此解决方案相反:htaccess redirect without changing url

+0

这一切都是在细节中的出色解释与重写模块一起提供的手册... – arkascha

+0

http://i.imgur.com/d6YNRiK.jpg –

+1

@d -_- b您的列表是否有任何彼此相同的模式,您可以使用它们匹配并将它们重定向到所需的位置?如果是这样的话,你可以避免写每一个地址。 – Prix

回答

2

根据您的URL布局,我会去像这样的东西:

RewriteCond %{REQUEST_URI} ^/(A) [OR,NC] 
RewriteCond %{REQUEST_URI} ^/(B) [OR,NC] 
RewriteCond %{REQUEST_URI} ^/(C) [OR,NC] 
RewriteCond %{REQUEST_URI} ^/(E) 
RewriteRule ^.*$ /d#%1 [L] 

当然,你也可以做一个行:

RewriteCond %{REQUEST_URI} ^/(A|B|C|E) [NC] 
RewriteRule ^.*$ /d#%1 [L] 
+0

对于每个他自己..大声笑..这也可工作的可读性,但似乎使用管道较少的代码。 –

+1

@Pjack是的,使用管道代码少,如果他只需要重写1级子目录,但将其映像为不是一个或一个巨大的名称,对于一行就会变得非常混乱。 – Prix

2

这取决于您的分组意思。您可以匹配域后的任何内容,并将其指向您真正想要的其他网址。

举例来说。

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+) /d [L] 

这将匹配www.site.com/Awww.site.com/Bwww.site.com/C,并重定向到 www.site.com/d不改变URL

希望帮助。

编辑:

要获得关于特定网址的评论,你可以做到这一点,如果你只想A B or C重定向。简单的例子,但应该很好。

RewriteEngine on 
RewriteRule ^(A|B|C)$ /d [L] 

这将匹配www.site.com/Awww.site.com/Bwww.site.com/C,并重定向到 www.site.com/d不改变网址。

+0

谢谢,这几乎是我在寻找什么。是否有可能包含一个应该全部“指向”相同的最终url的url列表?或者是更容易手动将它们全部写出来(如果列表将变得相当大) –

+0

是会得到相当大的列表? –

+0

我会说可能20,也许更多..我只是希望使长期运行.htaccess文件更容易维护,如果它增长很多 –

相关问题