2011-01-05 191 views
1

我想在我的.htaccess中将用户重定向到另一个url,具体取决于用户访问的内容。.htaccess:根据访问的url重定向

在这种情况下,http://example.com/awesome.comhttp://awesome.com是同一个网站,如果用户访问http://example.com/awesome.com,我希望他或她被重定向到http://awesome.com

这可行吗?

编辑:随着答案的帮助下,我想出了这个工作的解决方案:有关的.htaccess

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^awesome.com$ 
RewriteRule ^(.*)$ http://awesome.com/$1 [R=301] 

回答

1

你可以使用mod_rewrite(Apache2的模块)

这是我使用以便从我的旧域名重定向到我新的(同时保持链接谢灵运如www.domain1.com/link的的.htaccess /linkb.html成为www.domain1 GR /link/linkb.html)

RewriteEngine On 
RewriteCond %(www\.)?domain1\.com$ [NC] 
RewriteRule .* http://www.domain1.gr%{REQUEST_URI} [R=301,L] 

谷歌mod_rewrite的更多信息(语法等)

+0

这正是我所追求的。但是,我无法让它工作。请参阅编辑。 – 2011-01-05 17:48:53

+0

你是否收到“内部服务器错误”页面?或者它根本不起作用? – Thordin9 2011-01-05 17:51:13

+0

它根本不起作用。我可以在我的.htaccess中检查mod_rewrite是否被激活? – 2011-01-05 17:52:03

0

不能完全确定,但你可以只使用服务器代码的404页上给他们适当地重定向;这样你可以收集统计数据,设置一个工具栏,或者你可能想要采取的任何其他行动。

0

.htaccess是关于授权,而不是重定向。我建议你看一下Apache的重定向支持(或者你使用的任何Web服务器),这更适合这个问题,并且确保你的.htaccess /授权符合目标。

0

这个规则应该这样做:

RewriteRule ^awesome\.example(/.*)?$ http://www.awesome.example$1 [R=301,L] 
+0

对不起,它没有。 – 2011-01-05 17:57:44

+0

@Ben Galler:哦,等一下,这个团队应该是可选的。 – Gumbo 2011-01-05 18:01:25

+0

无法让它工作。据我的网站酒店,mod_rewrite应该启用... – 2011-01-05 18:23:00

0

检查重定向& Apache中的RedirectMatch选项。对于简单的情况,像你的,它比mod_rewrite简单。

Redirect /awesome.com http://ww.awesome.com 

Redirect permanent /awesome.com http://ww.awesome.com 

现在,如果exam​​ple.com和awesome.com是相同的Apache服务器和同一虚拟主机上你也许mising命名基础的虚拟主机的事情,你也许想使一些事情比简单的已命名的基本虚拟主机定义更加复杂。