htaccess重写规则从/index.php到/ index AND从?lang = en到/ en / NOT WORKING

时间:2016-10-16 06:06:42

标签: .htaccess mod-rewrite

我有一个htaccess文件,它会从我的网址中删除.php扩展名。它看起来像这样:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

我想添加另一个RewriteRule来修改我的网址:

www.example.com/index ?lang = zh_

到此:

www.example.com / en / index

我想出的代码如下:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^(de|en)/(.*)$ $2?lang=$1 [L,QSA]
RewriteRule ^(.*)$ $1?lang=de [L,QSA]

这适用于我的本地XAMPP服务器,但不适用于托管的虚拟主机服务器。

什么可能导致问题,是代码,还是我浏览器中缓存的.htaccess文件?

这段代码不能与我的网站主机兼容吗?

2 个答案:

答案 0 :(得分:0)

尝试添加,

Options -MultiViews

除了你的规则。

答案 1 :(得分:0)

您可以使用以下规则:

RewriteEngine On

RewriteRule ^(de|en)/(.*)$ $2?lang=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

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