2009-10-01 2 views
1

Я mod_rewrite noob, и я получаю головную боль, пытаясь понять, что должно быть простым. То, что я пытаюсь сделать, это удалить ненужные переменные из URL-адреса, отображаемого после использования формы GET. Другими словами, я пытаюсь изменить это:Использование mod_rewrite для удаления определенных переменных GET

stats.php?gender=W&team_id=88&btnGet=Get+Stats 

к этому:

stats.php?team_id=88 

Пожалуйста, помогите мне!

EDIT: Все, что мне нужно было сделать, это удалить атрибуты «имя» в моей форме на «пол» и кнопку отправки. Благодаря слишком большому количеству php и Gumbo для решения! Конечно, было намного проще осуществить это. :)

+0

Почему вы пытаетесь это сделать? Это по причинам SEO? Если это так, вы можете использовать канонический метатег, чтобы google игнорировал дополнительные данные строки запроса. см. http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html –

+0

Это часть саморегуляционной формы GET, которая также использует Ajax. Человек выбирает пол, а затем команду и нажимает «Получить статистику». Я хочу, чтобы дополнительные переменные удалялись из URL-адреса только для того, чтобы привести в порядок. В принципе, форма используется только для определения команды team_id, и статистика отображается ниже формы. – MonkeyWrench32

+0

Просто не давайте кнопку отправки имени. – Gumbo

ответ

2

Что бы это даже достигнуто? URL-адрес по-прежнему будет отображаться точно так же в адресной строке пользователя, а PHP более способен игнорировать переменные $_GET, чем когда-либо будет mod_rewrite.

Попробуйте удалить атрибут 'name="btnGet"' из вашей кнопки отправки и опустить поле 'gender'. Вы также можете использовать Javascript для динамического удаления элементов формы, которые не нужны.

1
RewriteCond %{QUERY_STRING} team_id=([0-9]+) 
RewriteCond %{QUERY_STRING} btnGet 
RewriteRule stats.php stats.php?team_id=%1 [R] 

Вы не можете сопоставлять строки запроса с помощью RewriteRule - вы должны использовать RewriteCond.

Как говорится «слишком много», просто переписывание не вызовет никаких видимых изменений для пользователя, если вы не перезагрузите страницу. Поэтому вам понадобится [R], чтобы принудительно перенаправить вместо простой перезаписи, что может не работать для логики вашей программы.