2011-07-02 17 views
0

ive私のサイトのモバイル版を作成し、htaccessファイルでユーザーをリダイレクトしようとしました。モバイルブラウザでhtaccess書き換えルールが機能しません

私のサイトでは、URLをクリーンアップする前にリライトルールを使用しています。これはうまくいきます。私はまったく同じルールを実行しようとするが、index.phpの代わりにmobile.phpにリダイレクトすると、500の内部サーバーエラーが発生する。ここで

はコードです:

RewriteEngine On 

RewriteCond %{HTTP_USER_AGENT} #detect mobile browsers here... 
RewriteRule ^([^/]*)[/]*([^/]*)$ /mobile.php?r=$1&id=$2 [L] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^/]*)[/]*([^/]*)$ /index.php?r=$1&id=$2 [L] 

誰もが私の問題を見ることができますか?

答えて

0

はい - この行は、あなたが、それはいくつかの理由のために無効であるポストとして:

RewriteCond %{HTTP_USER_AGENT} #detect mobile browsers here... 
  1. コメント#detect mobile browsers here...のみ行の最初の非空の文字することができます - コメントはで起動することはできません。ラインの真中。

  2. #1のため、行が不完全である - 「条件パターン」の部分が欠けているはずです(代わりにコメントがあります)。あなた、それは別の反復になり、(このルールで書き換えループにした後のmod_rewriteが書き換えないことを忘れて多くの人々を入力することができ、あなたが適切な余分挿入しない場合は、正しい/完全な構文についてthe docs

  3. を参照してください。条件(RewriteCond)それは永遠にループするかもしれません - 実際にはApacheは限界に達した後にそれを壊しますが、その点は残っています)。

0

最初のコードの問題点はわかりませんが、私が達成しようとしていることは何かを考え出しました。

RewriteEngine On 

RewriteCond %{REQUEST_URI} ^/index.php$ [OR] 
RewriteCond %{REQUEST_URI} ^/$ 
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC] 
RewriteRule ^([^/]*)[/]*([^/]*)$ /mobile.php?r=$1&id=$2 [L] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC] 
RewriteRule ^([^/]*)[/]*([^/]*)$ /mobile.php?r=$1&id=$2 [L] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^/]*)[/]*([^/]*)$ /index.php?r=$1&id=$2 [L] 

これは良い方法ですか?私はこれでかなり新しい(明らかに)。