2013-12-04 3 views
0

У меня есть проблема с двумя частями, с которой я только успешно справился с первой частью. я ниже перечисленных в файле .htaccess, который прекрасно работает:Apache Rewrite с переменными в строке запроса

RewriteRule ^senior/?$ demo.php?dID=1 [NC,L] 

Так посетители могут идти прямо к mysite.com/senior и правильной внутренней страницы (demo.php = 1 сделал?) Получает подъехала.

Моя проблема в том, что я также хотел бы переписать, где /demo.php?dID=1 отображается в строке URL как/старший. Таким образом, существующие ссылки появляются с новым удобным URL-адресом.

Моя попытка до сих пор:

RewriteCond %{QUERY_STRING}   ^dID=1$ 
RewriteRule ^demo.php$ senior [NC] 
RewriteRule ^senior/?$ demo.php?dID=1 [NC,L] 

Спасибо за ваше время и помощь.

ответ

1

Вы хотите, чтобы соответствовать против запроса вместо строки запроса и перенаправить браузер:

RewriteCond %{THE_REQUEST} \ /demo\.php\?dID=1($|\ |&) 
RewriteRule ^demo.php$ /senior? [NC,R] 
RewriteRule ^senior/?$ /demo.php?dID=1 [NC,L] 
+0

Работал, как шарм, спасибо !!! – Ryan

+0

На самом деле есть небольшая ошибка выше. Если идентификатор передается 1 или 11, он соответствует 1, а не 11. То же, если идентификатор равен 8 или 86, он соответствует 8. – Ryan

+0

@ Ryan см. Дополнительный элемент регулярного выражения для условия –

0

Место это дополнительное правило до вашего текущего правила:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+demo\.php\?dID=([^\s&]+) [NC] 
RewriteRule^/senior? [R=302,L] 

RewriteRule ^senior/?$ /demo.php?dID=1 [NC,L] 

Ваше текущее правило, основанное на QUERY_STRING будет цикл, так как внутреннее правило переписывания заполнит QUERY_STRING и оба правила будут держать вызывая друг друга.

+0

Я попробовал ваше решение, и оно в конечном итоге перенаправляется на следующей странице: HTTP: //www.mysite .com/вар/WWW/виртуальных доменов/6yfw-lwnd.mysite.com/httpdocs/старший. Решение Jon Lin разработано выше, но я также высоко ценю ваши усилия! – Ryan

+0

@Ryan: На самом деле это было из-за отсутствия ведущей косой черты, которую я сейчас редактировал. – anubhava

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