2016-04-07 2 views
1

У меня есть несколько запросов для одной страницы. Чтобы очистить URL, я использовал htaccess, но для аналогичного только первого правила работает.Правило перезаписи не работает в htaccess для аналогичной страницы

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9_-]+)$ eventlist.php?i=$1 # 1st rule works 
RewriteRule ^([a-zA-Z0-9_-]+)$ eventlist.php?c=$1 # 2nd rule doesn't work 

Первое правило - получить отличные результаты, но второй результат не дает мне никакого результата.

+0

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

+0

http: // localhost/10times/eventlist? I = education-training этот url должен быть преобразован в http: // localhost/10times/education-training –

+0

http: // localhost/10times/eventlist? C = india должен преобразуется в http: // localhost/10times/india –

ответ

0

Оба ваших правила одинаковы, вторая не работает, потому что первая уже перезаписывает URL. Кроме того, само правило не является логическим.

Ваш пример будет делать следующее:

  • domain.com/123 будет указывать на eventlist.php я = 123

Если бы переместить второе правило для во-первых, произойдет следующее:

  • domain.com/123 будет указывать на eventlist.php? С = 123

Как вы знаете, которым один принес вам EventList?

рабочие, и больше логики решения были бы:

RewriteEngine on 
RewriteRule ^i-([a-zA-Z0-9_-]+)$ eventlist.php?i=$1 
RewriteRule ^c-([a-zA-Z0-9_-]+)$ eventlist.php?c=$1 

Таким образом domain.com/i-123 будет указывать на eventlist.php I = 123?. Это просто пример, вы бы лучше использовать что-то вроде domain.com/event-123/

Edit:

Основываясь на ваш комментарий, вы хотите сохранить только один URL и указать его либо стране, либо отрасли. Это ваты вы делаете в вашем случае:

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9_-]+)$ eventlist.php?ic=$1 

В файле PHP, вы должны проверить базы данных/данные, если $_GET['ic'] страны или отрасль. По результатам проверки вы можете отобразить необходимые события.

Действительно важно в этом случае: НЕ забывайте, что каждая отрасль или страна должна быть уникальной.

+0

Фактически я представляю здесь отрасль, а c представляет страну здесь. список событий страницы должен отображать данные по отраслям по запросу, и один и тот же список событий страницы должен отображать данные по странам по запросу. что было бы лучшим решением –

+0

Это именно то, что я объяснил в своем ответе. Я пытаюсь объяснить это еще проще. Будет обновлен мой ответ напрямую, всего на секунду. – Boratzan

+0

, но результаты от i отличаются от $ _GET ['i'], а для c отличается, если он исходит из $ _GET ['c'], поэтому все равно будет работать в этом случае –

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