将www重定向到主域,不带www和301

时间:2014-12-27 05:26:47

标签: ruby-on-rails ruby apache redirect passenger

我有一个主域名" my_domain.com"和一些子域名(" sub1.my_domain.com"," sub2.my_domain.com" ...)。可以请求主域名为" my_domain.com"和" www.my_domain.com"。

我需要重定向来自" www.domain.com /.../ any_url"的所有请求。到" domain.com"状态为301.或者,最好是来自" www.domain.com /.../ any_url"的所有请求。到" domain.com /.../ any_url"。

我已经阅读了一些教程,但并不了解标准和最简单的方法。该网站正在开发Rails,Passenger,Apache和Linux。

这是/etc/apache2

中的内容
root@my_user# ls -al 
total 88
drwxr-xr-x   7 root root  4096 Dec 26 19:22 .
drwxr-xr-x 111 root root  4096 Dec 23 03:27 ..
-rw-r--r--   1 root root  8346 Feb  6  2012 apache2.conf
drwxr-xr-x   2 root root  4096 Dec 26 19:09 conf.d
-rw-r--r--   1 root root  1322 Feb  6  2012 envvars
-rw-r--r--   1 root root     0 Dec 26  2013 httpd.conf
-rw-r--r--   1 root root 31063 Feb  6  2012 magic
drwxr-xr-x   2 root root 12288 Apr 16  2014 mods-available
drwxr-xr-x   2 root root  4096 Dec 30  2013 mods-enabled
-rw-r--r--   1 root root   750 Feb  6  2012 ports.conf
drwxr-xr-x   2 root root  4096 Sep 22 13:22 sites-available
drwxr-xr-x   2 root root  4096 Sep 22 13:22 sites-enabled

我该怎么做?如何通过mod_rewrite,apache2.conf,/ etc / apache2 / sites -available / my_domain.com或使用其他方式?我很困惑。

更新

# ls -al /etc/apache2/sites-available
total 32
drwxr-xr-x 2 root root 4096 Sep 22 13:22 .
drwxr-xr-x 7 root root 4096 Dec 26 19:22 ..
-rw-r--r-- 1 root root 2716 May 16  2014 my_site-old
-rw-r--r-- 1 root root 1499 Sep 22 13:22 my_site.my_domain123.com
-rw-r--r-- 1 root root  950 Feb  6  2012 default
-rw-r--r-- 1 root root 7469 Feb  6  2012 default-ssl
-rw-r--r-- 1 root root 1511 Dec 30  2013 puppetmaster

3 个答案:

答案 0 :(得分:0)

Refer this加载mod_rewrite。

使用以下规则,您已定义ServerName www.domain.com

<VirtualHost *:80>

  ServerName www.domain.com
  # Your existing customizations
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
  RewriteRule ^(.*)$ http://domain.com$1 [R=301,L]

</VirtualHost>

答案 1 :(得分:0)

我是这样做的: 编辑 application_controller.rb ,以便您可以应用&#34;过滤器&#34;对所有其他控制器。

root@Ecommerce:/# nano /home/NAMEAPP/app/controllers/application_controller.rb

进入文件,把它放在:

class ApplicationController < ActionController::Base
before_filter :redirect_subdomain

    def redirect_subdomain
      if request.host == 'www.dominio.cl'
        redirect_to 'http://dominio.cl' + request.fullpath
      end
    end
end

答案 2 :(得分:-1)

您可以尝试使用rack-rewrite gem