2009-08-10 23 views
0

最初に私はCodeigniter Frameworkを使用していますので、この問題は、CIプロセスのURLとmod_rewriteで設定した現在のリダイレクトの回避策です。.htaccessリダイレクトエラー

このようなURLを/?gclid=somestringgoeshereにして、/index.php?/home/gclid/somestringgoeshereにリダイレクトしようとしています。それはの何かをしようとする前に、私はそれをキャッチするために右の最初の設定の書き換え条件とルールの上に次のコードを使用しようとしています

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} ^system.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 


    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    RewriteRule ^([^_]+)-([^_]+)-([^_]+)-([^_]+)-([^_]+)-([^_]+)-([^.]+)$ index.php?/$1_$2_$3_$4_$5_$6_$7 [L] 
    RewriteRule ^([^_]+)-([^_]+)-([^_]+)-([^_]+)-([^_]+)-([^.]+)$ index.php?/$1_$2_$3_$4_$5_$6 [L] 
    RewriteRule ^([^_]+)-([^_]+)-([^_]+)-([^_]+)-([^.]+)$ index.php?/$1_$2_$3_$4_$5 [L] 
    RewriteRule ^([^_]+)-([^_]+)-([^_]+)-([^.]+)$ index.php?/$1_$2_$3_$4 [L] 
    RewriteRule ^([^_]+)-([^_]+)-([^.]+)$ index.php?/$1_$2_$3 [L] 
    RewriteRule ^([^_]+)-([^.]+)$ index.php?/$1_$2 [L] 

    # Checks to see if the user is attempting to access a valid file, 
    # such as an image or css document, if this isn't true it sends the 
    # request to index.php 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    # This last condition enables access to the images and css folders, and the robots.txt file 
    # Submitted by Michael Radlmaier (mradlmaier) 

    RewriteCond $1 !^(index\.php|images|robots\.txt|css) 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

の下

私が設定した現在の.htaccessがある

RewriteRule ^?gclid=(.*)$ index.php?/home/gclid/$1 [L] 

RewriteRule ^\?gclid=(.*)$ index.php?/home/gclid/$1 [L] 

RewriteRule ^/?gclid=(.*)$ index.php?/home/gclid/$1 [L] 

いずれも正しいページを表示していないか、500の内部エラーが発生しています。

答えて

2

URIのクエリのみRewriteCond directiveでテストすることができます。

RewriteCond %{QUERY_STRING} ^gclid=(.*) 
RewriteRule ^$ index.php?/home/gclid/%1 [L] 

以上の一般的な(さらにクエリパラメータを検討する):

RewriteCond %{QUERY_STRING} ^([^&]*&)*gclid=([^&]*) 
RewriteRule ^$ index.php?/home/gclid/%2 [L] 

ああ、ところで:RewriteCondディレクティブのみ対応最初のRewriteRule指令に従います。

+0

これは?このようなURLの^?gclid =(。*)でもエラーを表示します – cointilt

+0

URIパスは 'RewriteRule'ディレクティブでしかテストできません。 URIクエリ(最初の '? 'からそれまでの最初の'# 'までの部分)は、'%{QUERY_STRING}'変数でのみアクセスできます。それは 'RewriteCond'ディレクティブでのみ可能です。だから私の例はうまくいくはずです。 – Gumbo

+0

あなたの例からコピーしたテキストに問題があることが判明した場合、それは奇妙な文字を挿入しました。ありがとう! – cointilt

関連する問題