从/index.php重写规则到/index和从?lang=en到/en/不工作



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

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

我想添加另一个rewriterrule,它将修改我的url:

www.example.com/index ?lang = en

to this:

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文件?

这个代码与我的虚拟主机不兼容吗?

尝试添加

Options -MultiViews

您可以使用以下规则:

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]

最新更新