.htaccess 重写 cond/rule 并隐藏 url 参数

.htaccess rewrite cond/rule and hide url paremeters

我的根目录中有一个 htaccess。

我的文件路径http://example.com/folder1/folder2/index.php?country=eu&lang=en

我在 htaccess 中制作了这个。

RewriteCond %{HTTP_HOST} ^(www.)?anothersite.com$   
RewriteRule ^([^/]*)/([^/]*)$ /folder1/folder2/index.php?country=&lang= [L]
RewriteRule ^([^/]*)$ /folder1/folder2/index.php [L]

看起来像这样

http://example.com/index.php?country=eu&lang=en

但我想要这样 -> http://example.com/eu-en

有没有办法在 htaccess 中做到这一点?

编辑: 我必须使用重写条件,因为我重定向到文件夹取决于主机。

编辑 2:解决方案

RewriteCond %{HTTP_HOST} ^(www.)?anothersite.com$   
RewriteRule ^([a-z]{2,2})-([a-zA-Z0-9_-]+)$ /folder1/folder2/index.php?country=&lang= [QSA]

多亏了答案,它现在可以工作了。但在那之后我在网站上收到 css 和 js 错误。然后我改变了 css 和 js 路径 /folder1/folder2/css.

您需要附加 [QSA](查询字符串附加)标记。尝试

RewriteEngine on

RewriteRule ^([a-z]{2,2})/([a-zA-Z0-9_-]+)$ index.php?lang=&page= [QSA]

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

试试下面的方法,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)-([^/]+)$ index.php?country=&lang= [QSA]