htaccess加载页面B而不是页面A而不重定向

时间:2013-07-06 02:34:04

标签: .htaccess

使用.htaccess文件,如何在加载page B时加载page A?我不希望更改网址,但仍应说page A

示例:用户加载www.mysite.com/contact并获取www.mysite.com/contact-us

的结果

最好如何将多个网址重定向到同一个地方?例如.com/A.com/B.com/C都会加载.com/d的内容。有没有办法将其中的许多组合在一起(与此解决方案相反:htaccess redirect without changing url

2 个答案:

答案 0 :(得分:3)

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

例如。

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而不更改网址

希望有所帮助。

修改

要回答有关特定网址的评论,如果您只希望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而不更改网址。

答案 1 :(得分:3)

根据您的网址布局,我会选择以下内容:

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]