使用正确的URL参数将非www重定向到www

时间:2012-03-22 08:46:42

标签: ruby-on-rails ruby-on-rails-3

我需要将非www重定向到www,并使用正确的URL参数。很多网址(非www)已经在谷歌索引中。我需要一个配置,url中的params重定向正确。一个例子:

nice2stay.com/houses/1

重定向到:

www.nice2stay.com/nl/holidayhouses/nameofthehouse

想法?

我刚刚在我的开发笔记本电脑上尝试了下面的代码。

约束(:host =>“localhost”)     root:to =>重定向( “HTTP://www.localhost:3000”)     匹配'/ * path',:to =>重定向{| params |的 “http://www.localhost/# {PARAMS [:路径]}”}   端

当请求的url是根域时,这个工作,但是当请求url是localhost时,这不起作用:/ houses路径配置不正确吗?

1 个答案:

答案 0 :(得分:1)

编辑:对不起,我没有看到rails标记...以下内容仍然有效:您可以使用前端服务器(apache或nginx)执行此操作。我猜你也可以在应用程序控制器内部进行301重定向。


这取决于您的服务器。

如果您使用的是apache,请确保已安装mod_rewrite(大多数共享托管都是这种情况),在托管的根目录下创建一个.htaccess文件,然后键入以下重写规则在其中:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
  RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

这将强制www.前缀并执行301重定向从非www到www网址,这是谷歌的最佳解决方案。