2010-08-24 6 views
0

Я читал много в течение нескольких часов и до сих пор не могу найти то, что мне нужно! Надеюсь, кто-то здесь может помочь.htaccess перенаправляет на наличие определенной переменной URL

Я хочу добиться того, чтобы перенаправить определенный URL-адрес с определенной переменной на другую страницу, но не тогда, когда есть другие переменные URL.

например.

  • index.php вариант = com_user - это должно быть перенаправлены на index.php
  • index.php вариант = com_user & вид = логин - это не должно быть перенаправлены
  • index.php? опция = com_user & вид = Войти & Foo = бар - это не должно быть перенаправлены

Я нашел много примеров, которые проверяют на наличие данной переменной, но я хочу проверить для этой переменной и испытания что никаких других переменных не существует.

Может ли кто-нибудь помочь?

Заранее спасибо.

+0

Итак, вы хотите выполнить перенаправление (внешнее?), если строка запроса содержит только 'option ='? Или, если строка запроса содержит 'option =' и не содержит конкретного списка других переменных? –

+0

Я хочу выполнить внутреннее перенаправление, если строка запроса содержит опцию = com_user и другие переменные. На самом деле не имеет значения, что другие переменные, но я знаю некоторые, которые я могу проверить, если необходимо (например, view, return). То, что я специально хочу перенаправить, это URL index.php? Option = com_user – tulip

ответ

1

Возможно, если вы будете выполнять внутреннее перенаправление, ваш скрипт может просто игнорировать этот параметр, если другие параметры отсутствуют. Но это было не то, что вы просили, поэтому давайте посмотрим, как это можно сделать с помощью mod_rewrite.

Если мы просто заботимся о том, если есть нибудь еще в строке запроса, мы можем просто проверить, если option=com_user это единственное, что есть:

RewriteEngine On 

RewriteCond %{QUERY_STRING} =option=com_user [NC] 
RewriteRule index\.php index.php? 

Однако это все же позволит /index.php?option=com_user&complete=nonsense проскочить, поэтому, если бы мы хотели быть немного более ограничительными, мы могли бы сделать что-то вроде этого:

RewriteEngine On 

# Check if the query string contains option=com_user 
RewriteCond %{QUERY_STRING} (^|&)option=com_user(&|$) 
# Check that all of these other parameters were not provided 
RewriteCond %{QUERY_STRING} !(^|&)view= 
RewriteCond %{QUERY_STRING} !(^|&)foo= 
RewriteRule index\.php index.php? 
+0

Отлично! Спасибо за помощь Тим. Я на самом деле немного изменил его, так что он также перенаправляется на альтернативную форму входа. :) – tulip

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