Drupalサイトexample.com
があり、クライアントが新しいドメイン名campaign.com
を購入したキャンペーンを推進しています。 campaign.com
のリクエストがDrupalサイトの特定のページに内部的に書き換えられるようにしたいと思います。注Drupalは、ドキュメントルートで.htaccessファイルを使用します。
通常のDrupal書き換えは
# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
以下を追加しましたbefore通常の書き換え。
# Custom URLS (eg. microsites) go here
RewriteCond %{HTTP_Host} =campaign.com
RewriteCond %{REQUEST_URI} =/
RewriteRule ^ index.php?q=node/22 [L]
残念ながら機能しません。ホームページを表示するだけです。書き換えログを有効にすると、これが表示されます。
1. [rid#2da8ea8/initial] (3) [perdir D:/wamp/www/] strip per-dir prefix: D:/wamp/www/ ->
2. [rid#2da8ea8/initial] (3) [perdir D:/wamp/www/] applying pattern '^' to uri ''
3. [rid#2da8ea8/initial] (2) [perdir D:/wamp/www/] rewrite '' -> 'index.php?q=node/22'
4. [rid#2da8ea8/initial] (3) split uri=index.php?q=node/22 -> uri=index.php, args=q=node/22
5. [rid#2da8ea8/initial] (3) [perdir D:/wamp/www/] add per-dir prefix: index.php -> D:/wamp/www/index.php
6. [rid#2da8ea8/initial] (2) [perdir D:/wamp/www/] strip document_root prefix: D:/wamp/www/index.php -> /index.php
7. [rid#2da8ea8/initial] (1) [perdir D:/wamp/www/] internal redirect with /index.php [INTERNAL REDIRECT]
8. [rid#2da7770/initial/redir#1] (3) [perdir D:/wamp/www/] strip per-dir prefix: D:/wamp/www/index.php -> index.php
9. [rid#2da7770/initial/redir#1] (3) [perdir D:/wamp/www/] applying pattern '^' to uri 'index.php'
10.[rid#2da7770/initial/redir#1] (3) [perdir D:/wamp/www/] strip per-dir prefix: D:/wamp/www/index.php -> index.php
11.[rid#2da7770/initial/redir#1] (3) [perdir D:/wamp/www/] applying pattern '^(.*)$' to uri 'index.php'
12.[rid#2da7770/initial/redir#1] (1) [perdir D:/wamp/www/] pass through D:/wamp/www/index.php
私はmod_rewriteに慣れていないので、何かが足りないかもしれませんが、http://example.com/node/3
とhttp://campaign.com/
の呼び出しのログを比較しても、意味のある違いは見られません。具体的には、4行目のURIとargsは正しく、7行目の内部リダイレクトは正しく、12行目のパススルーは正しいようです(ファイルindex.php
が存在するため)。しかし、何らかの理由で、内部リダイレクトの前後にクエリ文字列が破棄/無視されたようです。私は完全に困惑しています。
また、誰かが書き換えログを理解するためのリファレンスを提供できれば、それが役立つかもしれません。内部リダイレクトを介してクエリ文字列を追跡する方法があれば素晴らしいと思います。
FWIW Apache 2.2.17でWampServer 2.1を使用しています。
httpd.conf
からデータをプルするcampaign.com
のexample.com/macguffin/
<VirtualHost *:80>
ServerName campaign.com
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPreserveHost Off
ProxyPass / http://example.com/macguffin/
ProxyPassReverse / http://example.com/macguffin/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>