Htaccess:语言检测使用干净的URL

时间:2016-06-27 14:47:15

标签: .htaccess

这可能是一个非常简单的问题,但我通过论坛搜索而没有找到适合我的答案。如果我可以从不同的线程中解决这个难题,它可能就在那里,但重写规则并不是我最好的一面。

所以问题: 我想编写一个RewriteRule,它既清除url又将语言检测放在文件之前。 我在论坛中查看了.htaccess for language detection, redirecting + clean urls.htaccess rule for language detection等问题。

通过这两个组合我制作了一个有时有效但有时无效的解决方案。

我的结构:domain.com/subfolder/news.php?lang=en

我想要的是:domain.com/subfolder/en/news

到目前为止我的代码:

RewriteBase /subfolder/

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Language Detection
    RewriteRule ^(en|sv)/(.*)$  $2?lang=$1 [QSA,L]
    ## Remove .php extensions
    RewriteRule ^([^\.]+)$ $1.php [NC,L]`

这确实在某些路径上有效,但并非在所有路径上都有效(它们具有相同的结构)。 我应该如何制作这个解决方案?

先谢谢!

1 个答案:

答案 0 :(得分:1)

尝试:

RewriteBase /subfolder/

# Language Detection
RewriteRule ^(en|sv)/(.*)$  $2?lang=$1 [NC,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
## Remove .php extensions
RewriteRule ^([^\.]+)$ $1.php [NC,L]