У меня возникли некоторые проблемы - в основном потому, что мне трудно понять, как именно работает htaccess.
Итак, я создаю этот сайт - скажем, example.com. Этот сайт использует параметры URL для получения контента. Чтобы предварительно преобразовать выходные URL-адреса, я сделал example.com/index.php?slug=about-us
переписать в example.com/about-us/
.
. Для этого у меня есть файл .htaccess:
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /index.php?slug=$1 [L,QSA]
Пока все хорошо. Теперь я хочу иметь возможность просматривать контент на других языках, скажем на норвежском. Нет проблем - поэтому я добавляю:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2})/([^/]+)/?$ /index.php?slug=$2&lang=$1 [L,QSA]
Таким образом example.com/index.php?slug=about-us&lang=no
переписывается как example.com/no/about-us/
. Ура! Однако - я также хочу, чтобы домашний URL, example.com
принимал параметр языка, чтобы я мог иметь example.com/no/
. Но если я напишу:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /index.php?lang=$1 [L,QSA]
... это перезапишет первое правило, поэтому оно больше не будет принимать параметр slug
. Я уверен, что есть простой способ сделать это, но после нескольких часов поиска в Google, я все еще не мудрый. Надеюсь, кто-нибудь меня научит! : -)