1

Rails+Apache+Passenger セットアップがあり、アプリはワイルドカード サブドメインを提供します。www 以外の URL にリダイレクトするには、すべての www URL が必要です。

  • www.example.net は example.net にリダイレクトする必要があります
  • www.subdomain.example.net は subdomain.example.net にリダイレクトする必要があります

私の現在の仮想ホスト設定は以下の通りです

<VirtualHost *:80>

  ServerName  example.net
  ServerAlias *.example.net

  DocumentRoot /home/public_html/example.net/current/public

  RailsEnv staging

</VirtualHost>

さまざまな場所でさまざまな書き換えルールを試しましたが、効果がありませんでした。Apache 書き換えモジュールが有効になっていて、RewriteEngine がオンになっていることを確認しました。何が欠けているのかわからない。すべての助けに感謝します!

4

2 に答える 2

1

とにかくドメインに基づくロジックがあるため、アプリでこの問題を解決しました。このコードを ApplicationController に配置します

class ApplicationController < ActionController::Base
    before_filter :check_host

    def check_host
        if request.host.split('.')[0] == 'www'
            redirect_to "http://" + request.host.gsub('www.','')
        end
    end
end

一部のホスト名に「www.」が含まれている場合、特殊なケースが発生する可能性があります。コードを作成する必要があるその他の理由で。

于 2010-09-10T00:01:51.023 に答える
0

.htaccess ファイルで moderewrite を使用できます。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.net [NC]
RewriteRule ^(.*)$ http://example.net/$1 [R=301,NC]

RewriteCond %{HTTP_HOST} ^www\.subdomain\.example\.net [NC]
RewriteRule ^(.*)$ http://subdomain.example.net/$1 [R=301,NC]

これはうまくいくはずですが、私はそれをテストしていません。
またはこれ

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]
于 2010-09-09T11:11:37.427 に答える