我需要将非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路径配置不正确吗?
答案 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网址,这是谷歌的最佳解决方案。