несколько 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.

Author: Pink Code, 2015-01-19

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