1

私はサーバー側のコーディングの初心者なので、答えが明らかな場合はご容赦ください。

少し前にウェブサイトのフロントエンドをデザインしました。サブディレクトリとして共有ホスティング環境に存在します。モバイル バージョン (私が設計したものではなく、別のアカウントでホストされている) にリダイレクトするために、.htaccess ファイルをアップロードしようとしています。.htaccess ファイルをルート ディレクトリとサブディレクトリの両方にアップロードしようとしましたが、それぞれに問題があります。

ルートにアップロードすると、リダイレクトはどのデバイスでも発生しません。それは私の望みではありませんでしたが、ルートの下にあるすべての Web サイトがこの 1 つのサイトのモバイル バージョンにリダイレクトされることを期待していましたが、何も起こりませんでした。

.htaccess ファイルをサブディレクトリにアップロードすると、すべてのデバイスから表示すると、「要求したページは利用できません」が返されます。

次のコードは、.htaccess ファイルに入力するためにモバイル デザイナーから提供されたものです。

<IfModule mod_rewrite.c>

RewriteEngine on

#Check if this is the desktop to mobile query string
RewriteCond %{QUERY_STRING} (|&)m=1(&|$)
#Set a cookie, and skip the next 2 rules
RewriteRule – [CO=mredir:1:%{HTTP_HOST},S=2]
#Check if this is the mobile to desktop query string
RewriteCond %{QUERY_STRING} (|&)m=0(&|$)
#Set a cookie, and skip the next rule
RewriteRule – [CO=mredir:0:%{HTTP_HOST},S]
RewriteCond %{HTTP_USER_AGENT}
“android|blackberry|iphone|ipod|iemobile|opera
mobile|palmos|webos|googlebot-mobile” [NC]

#Check if we’re not already on the mobile site
RewriteCond %{HTTP_HOST} !m\.
#Can not read and write cookie in same request, must duplicate condition
RewriteCond %{QUERY_STRING} !(|&)m=0(&|$)
#Check to make sure we haven’t set the cookie before
RewriteCond %{HTTP_COOKIE} !^.mredir=0.$ [NC]
#allow mobile sites to access images on the main site
RewriteCond %{REQUEST_URI} !\.(gif|png|jpe?g|ico)$ [NC]

RewriteRule ^(.*)$ http://example.mobi/ [L,R=301]
</IfModule>

http://example.mobiを置き換える URL を省略しました

上記のコードに構文エラーがあるかどうかを検出できません。助けていただければ幸いです。

ありがとう

4

1 に答える 1

0

それは私の推測です。しかし、なぜ単純なリダイレクトに.htaccessを使用するように促すのですか?1つのサイト(ルート/ホスティングの特定のサブディレクトリ)のみが常に新しいモバイルバージョンにリダイレクトする必要がある場合、サーバー/ホスティング構成を使用して永続的なリダイレクトを設定できないのはなぜですか?

このようなツールは、cPanel、DirectAdminなどのほぼすべてのコントロールパネルにあります。ホスティングプロバイダーがホスティングサーバーを実行および管理するための独自の洗練されたソフトウェアを実行している場合でも、それが永続的なリダイレクトを行うため、.htaccessを使用してこのゲームをプレイする必要があります。

ところで:サーバー/ホスティング構成を介してこれを行うことができないと100%確信していて、.htaccessが唯一の方法である場合、おそらくこれがホスティングを変更する適切なタイミングですか?結局のところ、ドメイン/アドレス/ URLは各プロジェクトにとって最も重要であり、どのホスティングでもホストできます。

問題については、通常のPCまたはLinuxから、FireBugまたは同様の開発者ツールを備えたブラウザーを介して2番目のシナリオ(サブフォルダー内の.htaccess)を実行することをお勧めします。次に、リダイレクトを実行する必要があるが失敗するWebページを入力し、そのツールのログ/パスを注意深く調べて、実際にリダイレクトされている場所を確認しますか?これはあなたが期待していた本当にURLですか?ほとんどの場合、「リクエストしたページは利用できません」とは、その意味を意味します。つまり、ウェブサイトがブラウザを存在しないURLにリダイレクトしようとしました。

于 2012-06-20T13:26:20.740 に答える