2013-01-02 32 views
-1

我正在修改Drupal设置中的语言特定路径,从url get parameter(?language = en)改为一个url前缀/ en /。我需要检查请求的url是否包含语言参数(?language = en),然后重定向它。永久重定向语言路径(?language = en到/ en /)

我有4种语言(DA,恩,德,PL)应该采用这种结构被重定向:

www.example.com/blog?language=da => www.example.com/blog (This is the default language) 
www.example.com/blog?language=en => www.example.com/en/blog 
www.example.com/blog?language=de => www.example.com/de/blog 
www.example.com/blog??language=pl => www.example.com/pl/blog 

回答

1
RewriteCond %{QUERY_STRING} language=en 
RewriteRule ^/blog /en/blog/? [R=301] 

RewriteCond %{QUERY_STRING} language=de 
RewriteRule ^/blog /de/blog/? [R=301] 

RewriteCond %{QUERY_STRING} language=pl 
RewriteRule ^/blog /pl/blog/? [R=301] 
+0

可这是为所有包含(?language = en)的网址完成: 'www.example.com/* /?language = en' 'www.example.com/?language = en'? 'www.example.com/语言= de' 等.. – lata

2

以下条件可用于:

RewriteCond %{QUERY_STRING} ^language=da$ 
RewriteRule ^/blog /blog/? [R=301,L] 

RewriteCond %{QUERY_STRING} ^language=(en|de|pl)$ 
RewriteRule ^/blog /%1/blog/? [R=301,L] 
+0

可这对所有包含完成(语言= EN): www.example.com/*/?language=en www.example.com/?language=en www.example.com/?language=de 因此,它不只是为/博客文件夹,但也适用于/约/工作等 – lata

+1

为了使它适用于/ about/work,您需要将重写规则替换为:for da = RewriteRule^/(blog | about | work)/ $ 1 /? [R = 301,L]。对于en,de和pl = RewriteRule^/(blog | about | work)/%1/$ 1 /? [R = 301,L] –