2009-08-10 3 views
0

Во-первых, я использую Codeigniter Framework, поэтому эта проблема является обходным путем, поскольку URL-адреса процессов CI вместе с текущими перенаправлением, которые я создал с помощью mod_rewrite..htaccess ошибки перенаправления

Я пытаюсь получить URL-адрес, подобный этому /?gclid=somestringgoeshere, для перенаправления на /index.php?/home/gclid/somestringgoeshere.

В настоящее время .htaccess я поставил ниже

<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> 

Я пытаюсь использовать следующий код прямо над первым установленными условиями перезаписи и правила, чтобы поймать его, прежде чем пытаться что-нибудь еще

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

Смежные вопросы