多个rewriterole url使用htaccess

时间:2015-01-19 18:28:22

标签: php apache .htaccess seo

我的网站有两种语言。 (en/fr)。 en是默认语言,我使用此网址显示:

mydomain.com/
mydomain.com/news.php?id=XX

对于第二语言我有这个网址:

mydomain.com/index.php?lang=fr

现在我使用.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/添加到网址。

1 个答案:

答案 0 :(得分:1)

尝试:

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/的情况下重写的规则。