2012-04-18 2 views
0

Вот мой текущий .htaccess:mod_rewrite разных языков часть URL

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f [NC,OR] 
RewriteCond %{REQUEST_FILENAME} !-d [NC] 

RewriteRule ^$ /launcher/index.html [L] 

RewriteRule ^en/admin$ /main/index.php?lang=en&action=acp [L] 
RewriteRule ^sp/admin$ /main/index.php?lang=sp&action=acp [L] 

RewriteRule ^en/(.*)$ /main/$1?lang=en [L] 
RewriteRule ^sp/(.*)$ /main/$1?lang=sp [L] 

У меня есть экран пускового (который работает отлично), и мой сайт PHP файлы, которые являются основным/index.php. Я использую $ _GET для передачи информации о том, какая страница для моего index.php ie: index.php? Action = download & file = 123. Есть два уровня корня, которые я собираюсь использовать/en/для английского, и/sp/для испанского. Они передаются index.php как? Lang = en или? Lang = sp.

У меня есть 2 проблемы, которые я не могу исправить;

  • Мои правила имеют странное несоответствие сбоя. Вероятно, есть лучший способ сделать то, что я пытаюсь сделать. Я был бы очень признателен, если кто-то покажет мне, как это сделать. Я полный noob на mod_rewrite

  • Когда я добавляю больше вещей в конец URL-адреса, используя значение? Variable =, это происходит после? Lang = en или? Lang = sp. Это означает, что второй вопросительный знак заставляет $ _GET сбой, и эти $ _GET переданные переменные теряются. Мне нужен способ добавить два $ _GET вместе с mod_rewrite?

ответ

0

Чтобы решить вашу вторую проблему, вы изучили использование флага QSA? Цитируя docs: «qsappend | QSA»

(строки запроса Append)

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

Что касается первого вопроса, то вы можете потенциально объединить en и sp в одном правиле, как показано ниже. Однако можно утверждать, что это улучшение.

RewriteRule ^(en|sp)/(.*)$ /main/$2?lang=$1 [L,Q] 
Смежные вопросы