htaccess редирект для существования определенной переменной URL - PullRequest
0 голосов
/ 24 августа 2010

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

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

например.

  • index.php? Option = com_user - это нужно перенаправить на index.php
  • index.php? Option = com_user & view = login - это не должно быть перенаправлено
  • index.php? Option = com_user & view = login & foo = bar - это не должно перенаправляться

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

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

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

1 Ответ

1 голос
/ 26 августа 2010

Возможно, если вы будете выполнять только внутреннее перенаправление, ваш скрипт может просто игнорировать этот параметр, если другие параметры отсутствуют. Но это не то, о чем вы просили, поэтому давайте посмотрим, как это можно сделать с 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?
...