несколько URL-адресов перезаписи с использованием htaccess
У меня есть два языка для моего веб-сайта. (en/fr
). en
является языком по умолчанию, и я показываю этот URL-адрес:
mydomain.com/
mydomain.com/news.php?id=XX
Для второго языка у меня есть этот URL:
mydomain.com/index.php?lang=fr
Теперь я переписываю URL-адрес с помощью .htaccess
следующим образом:
RewriteEngine On
RewriteBase /
RewriteRule ^(fr)(/)?$ index.php?lang=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((fr)/)news/([0-9]+)/([A-Za-z0-9-]+)/?.html$ news.php?id=$1 [L]
Теперь в выводе:
mydomain.com <-- WORKED defualt
mydomain.com/fr/ <-- WORKED defualt
mydomain.com/fr/news/id/title.html <-- WORKED show news in fr language
mydomain.com/news/id/title.html <-- for default language NOT WORKED
Для языка по умолчанию (mydomain.com/news/id/title.html
) не работает. Как я могу решить эту проблему?
ПРИМЕЧАНИЕ: для языка по умолчанию мне не нужно добавлять /en/
в URL.
2
1 answers
Попробуйте:
RewriteEngine On
RewriteBase /
RewriteRule ^(fr)(/)?$ index.php?lang=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((fr)/)news/([0-9]+)/([A-Za-z0-9-]+)/?.html$ news.php?id=$2&lang=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news/([0-9]+)/([A-Za-z0-9-]+)/?.html$ news.php?id=$1 [L]
Вам не хватает правила, которое переписывается без /fr/
спереди.
1
Author: Jon Lin, 2015-01-19 18:50:43