0

私がやろうとしていることは、当初考えていたよりも複雑だと思います。最初の部分は簡単です。.htaccess を使用して、モバイル ブラウザを別のドメインの Web サイトの「モバイル」バージョンにリダイレクトしています。「非モバイル」サイトのルートにある .htaccess の内容は次のとおりです。

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} android.+mobile|iphone [NC]
RewriteRule ^(.*)$ http://m.domain.tld%{REQUEST_URI} [R]

2 番目の部分では、いくつかの複雑さが追加されます。モバイル ドメインで .htaccess を使用して、ほとんどのリクエストをルート ディレクトリの index.php にリダイレクトしています。モバイル サイトのルートにある .htaccess の内容は次のとおりです。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*) index.php

モバイル以外のサイトに送信されたリクエストにドメイン名のみが含まれている場合、これはすべて期待どおりに機能します。

http://www.domain.tld

にリダイレクトされます

http://m.domain.tld

問題ありません。

また、モバイルブラウザが読み込まれる場合

http://m.domain.tld/abc

期待どおりに動作します。モバイル ドメインのルートにある index.php が読み込まれ、リクエスト URL が解析され、値「abc」が変数に割り当てられます。

ただし、ナビゲートしようとすると、物事が奇妙に故障します

http://www.domain.tld/abc

モバイルブラウザで。これにより、非モバイルファイルが生成されます。

http://www.domain.tld/abc/index.php

ブラウザに読み込まれ、モバイルドメインの CSS でフォ​​ーマットされます。実行したい最初のリダイレクトは実行されませんが、CSS ファイルのような後続のリクエストはリダイレクトされているようです。両方のドメインが同じサーバー上の vhost です。

誰かが私がやろうとしていることを整理して解決策を提供できますか?

ありがとう、デイブ

4

1 に答える 1

1

私はこれを理解しました。問題は、www.domain.tld のディレクトリ /abc に、モバイル ブラウザをリダイレクトするための .htaccess がないことでした。私は、Apache が /abc ディレクトリが存在するという事実を魔法のように無視し、vhost のルート ディレクトリにある .htaccess を介してすべての要求を処理することを期待していたと思います。

そのため、のリクエストはhttp://www.domain.tld/abcリダイレクトされませんでした。また、アドレスバーには「http://www...」と表示されていましたが、そのリソースのリクエストは「http://m...」からのものであり、CSS ファイルが存在するため、「モバイルフォーマット」が適用されていました。モバイルドメインで。

于 2012-04-06T03:14:21.543 に答える