example.com/en表现为example.com?lang=en到example.com/en - htaccess

时间:2017-02-13 21:37:36

标签: .htaccess mod-rewrite

我在我的网站上添加了翻译,并使用来自lang等网址的GET变量example.com?lang=en来显示正确的语言。

我想让它看起来像example.com/en

example.com/somePage.php?lang=en同样应该看起来像example.com/en/somePage.php

语言参数在域名后面总是2个字母,因此始终为example.com/xx.../.../...whatever-url

如果未给出任何内容(例如example.comexample.com/whatever-url),则en为默认

所以我认为我们需要考虑到如果有一个名为en的文件夹或文件或其他什么,它应该优先考虑该文件夹/文件。但是不知道如何处理所有必需的过滤。

我试过了,但是失败了(当我去/en时说找不到页面) 但example.com/en/index.php有效。

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+([^/]+)/\?lang=([^\s&]+) [NC]
RewriteRule ^ /%2/%1? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z]{2})/([^/]+)/?$ $2/?lang=$1 [L,QSA]

0 个答案:

没有答案