Я использую перезапись URL через htaccess.Ниже приводится содержание:
Options +FollowSymLinks
RewriteEngine on
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z_-]+)\.php$ index.php?slug=$1 [L]
Моя текущая структура меню навигации:
<a href="home.php">Home</a>
<a href="about-us.php">About Us</a>
<a href="contact-us.php">Contact Us</a>
У меня есть столбец базы данных с именем slug, и с помощью $ _GET ['slug'] я могу запроситьБД и покажи результаты.Пока все работает нормально.
Что я пытаюсь сделать:
Я пытаюсь позволить пользователю изменить язык, на котором читается текст.У меня есть 2 изображения флагов, и они имеют гиперссылки (на самом деле языков больше).
Примеры:
<a href="<?php echo '?lang=en'; ?>">English</a>
<a href="<?php echo '?lang=pt'; ?>">Portugese</a>
Я добавил еще одну строку в .htaccess:
RewriteRule ^([0-9a-zA-Z_-]+)\.php?lang=[a-z]$ index.php?slug=$1&lang=$2 [L,QSA]
Допустим, я сейчас на странице О нас.URL будет выглядеть следующим образом: http://localhost/mysite/about-us.php
Теперь предположим, что я нажимаю «pt», чтобы сменить язык, страница переходит к: http://localhost/mysite/about-us.php?lang=pt
Если я отображаю $ _GET ['lang'] теперь он дает мне уведомление PHP:
Notice: Undefined index: lang
Поскольку $ _GET [' lang '] не определен, я не могу получить его значение и, следовательно, не могу запросить базу данных.Я также хочу убедиться, что я попал на ту же страницу, на которой находился, когда я сделал запрос на изменение языка.Поэтому, если я был на странице «Контакты» и щелкнул флажок, чтобы изменить язык на PT, я ожидаю, что страница перезагрузится, с / без отображения? Lang = pt в URL, и я хочу иметь возможность получить это значение, используя $_GET ['lang'], чтобы я мог запросить базу данных.Как это сделать?