これは部分的にはthis questionの反対であると確信していますが、いくつかの複雑さを伴う2つのパターです。mod_rewriteを使用した双方向URLマッピングと正規化
私は最近インストールJoomla!で(我々はtheorganization.com
それを呼ぶことにします)組織のサイトを継承し、誰かがちょうどそれが我々だけで「ポイント」することができます期待してホスティングのイベントのためにセカンダリドメイン(anevent.com
)を行って買いました既存のサイトの該当するセクションにあります。はい、「マスキング」シンプル方向でこれを達成することができますが、私はURLを正規化して、などは(これはない無限ループですmod_rewrite
を使用して両方の方向にそれをマッピングしたいと思います:1方向は301リダイレクト、もう1つはURLマスクです)
私は、既存のJoomla!上のイベントに関する情報をホストしたいと思います。インストールはセクションtheorganization.com/eventname/
にアクセスし、これを新しいドメインに置き換えてください。 注: Joomla!書き換え自体を使用するので、ではなくは、theorganization.com
というディレクトリの中の物理ディレクトリeventname
になります。 (もしそれがここで何をどのように影響するか/わからない。)
具体的には、私はJoomlaのコンテンツを提供するためにtheorganization.com/eventname
またはanevent.com
(とやwww
なしまたはスラッシュを末尾)のいずれかに行われたすべてのリクエストをしたいです!通常はtheorganization.com/eventname/
となり、URLはwww.anevent.com/
と表示されます。もちろん、これらのレベル以下のすべてのサブディレクトリとファイルも対応する必要があります。
Apache's mod_rewrite
docsを見て、私は以下の試みを思いついた。 theorganization.com
については
:
RewriteEngine On
# STRIP "www" IF PRESENT (undesired, but necessary for now due to other issues)
RewriteCond %{HTTP_HOST} ^www.theorganization.com$ [NC]
RewriteRule ^(.*)$ http://theorganization.com/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/eventname/?(.*)$ [NC]
RewriteRule ^http://(www\.)theorganization.com/eventname/?(.*)$ "http://www.anevent.com/$2" [R=301,L]
# ...
# ... default Joomla! .htaccess code here ...
多くの裁判の後、私はJoomlaのを忘れていることを発見しました!デフォルトで.htaccess
に独自の書き換えがあり、誤って上書きしてしまいました。 (ありがたいことに、私はfound a replacementです。)しかし、2番目の(操作上の)リダイレクトは、そうするべきではありません。何が間違っているのでしょうか? anevent.com
については
:これはかなりうまく動作するようです
RewriteEngine On
# ADD "www" IF MISSING
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# UNCONDITIONALLY DEFER ALL REQUESTS HERE TO theorganization.com/eventname/
RewriteRule ^(.*)$ http://theorganization.com/eventname/$1 [L]
(私は最初のものは、仕事を得ることができます仮定に基づきます)。しかし、最後の行の無条件ルールは、301/302などのように振る舞い、http://theorganization.com/eventname/FOO
をロードします。代わりに「マスキング」を達成するためにこれを変更すると、ユーザーはブラウザにhttp://www.anevent.com/FOO
しか表示されませんが、依然として同じコンテンツに向けられます。最初の部分については
各ドメインへのパスは、同じルート内の「theorganization.com」と「anevent.com」という名前のディレクトリです。このケースの2番目の例を編集できますか?また、最初の例で '^ [A-Z] {3,9} \'の機能は何ですか? –
@TimParentiがフォルダ構造に一致するように変更されました。 '^ [A-Z] {3,9} \'はHTTPメソッドGET、PUTなどと一致させることです –
最初のものは完全に動作します。ありがとう。しかし、2番目に内部サーバーエラーが発生しています。どのように原因を突き止めることができますか? –