Состояние доступа - PullRequest
       8

Состояние доступа

0 голосов
/ 27 марта 2012

Я пытаюсь соответствовать определенным правилам, только когда в строке запроса нет «локали»

Вот как я это делаю:

RewriteCond %{QUERY_STRING} !locale
RewriteRule ^acceuil$ home.php?locale=fr [NC,L]
... (More rewrite rules)

В основном я хочу /acceuil чтобы перейти к home.php?locale=fr (работает идеально)

За исключением того, что если какая-то ссылка была бы такой /acceuil?locale=en, я бы хотел вместо этого перейти на /home, что эквивалентно home.php?locale=en

Любой шанс переписать, скажем "/acceuil" следующим образом:

if(isset($locale)) {
      go to home.php?locale=$locale
}
else{
      go to home.php?locale=fr
}

Также мне интересно, должно ли условие вставляться копированием перед каждым правилом?

Пожалуйста, дайте мне знать, если это возможно, и как я могу это сделать, если у вас есть полезная ссылка для переписывания htaccess, пожалуйста, поделитесь:)

Спасибо

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Вот общее правило, которое должно работать, и это гарантирует, что переменная в GET будет locale (не localeee, ни llllocale):

RewriteCond %{QUERY_STRING} (^|&)locale=([a-zA-A]+)(&|$)
RewriteRule ^acceuil$ home.php?locale=%1 [L,NC,QSA]

# if locale = en ...
RewriteCond %{QUERY_STRING} (^|&)locale=en(&|$)
# ... and it goes to home.php then go back to /home:
RewriteRule ^home.php$ /home [L,NC,QSA]

Примечание: если это французский, то Accueil, а не Acceuil :)

1 голос
/ 27 марта 2012
RewriteCond     %{QUERY_STRING}  !locale
RewriteRule     ^acceuil$               home.php?locale=fr  [L,NC]
RewriteCond     %{QUERY_STRING}  locale=([a-zA-Z]{2})

RewriteRule     ^acceuil$               home.php?locale=%1  [L,NC]

Редактировать: Первое условие - просто проверьте наличие local в строке запроса.Если это не так, переписать URL-адрес на home.php?locale=fr, а если есть locale=, он берет все, что будет после этого (всего два символа), и помещает их в home.php?locale=%1, поэтому acceuil?locale=fr означает home.php?locale=fracceuil?locale=en означает home.php?locale=en.

Существует два условия и два правила перезаписи: -D

...