我有一个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]