.htaccess .htacces使用查询字符串重定向

.htaccess .htacces使用查询字符串重定向,.htaccess,mod-rewrite,apache2,.htaccess,Mod Rewrite,Apache2,我创建了一个.htacces文件,该文件执行以下操作: 将/重定向到/.index/(在地址栏中可见) 或 将/hu或/en重定向到/.index/hu或/.index/en(在地址栏中可见) 然后 将像/[p]/[l]这样的请求重定向到/index.php?page=[p]&lang=[l](在地址栏中不可见) 但是 我想在末尾保留查询字符串,这意味着访问/[p]/[l]?a=b会导致请求/index.php?page=[p]&lang=[l]&a=b 我似乎无法让正则表达式为此工

我创建了一个.htacces文件,该文件执行以下操作:

  • /
    重定向到
    /.index/
    (在地址栏中可见)

  • /hu
    /en
    重定向到
    /.index/hu
    /.index/en
    (在地址栏中可见)

然后

  • 将像
    /[p]/[l]
    这样的请求重定向到
    /index.php?page=[p]&lang=[l]
    (在地址栏中不可见)
但是 我想在末尾保留查询字符串,这意味着访问
/[p]/[l]?a=b
会导致请求
/index.php?page=[p]&lang=[l]&a=b

我似乎无法让正则表达式为此工作。以下是整个.htaccess文件:

RewriteEngine On
RewriteBase /Main/djdavid98/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(hu|en)?(\/?(\?(([\S]+\=[\S]+)*))?)?$ ./.index/$1$3 [R=301,L]
RewriteRule ^\.([\w\d]+)(\/(hu|en))?\/?(\?(([\S]*=[\S]*)+))?$ index.php?page=$1&lang=$3&$5
使用,它会将已经存在的任何查询字符串附加到您在规则目标中构建的查询字符串的末尾:

RewriteRule ^\.([\w\d]+)(\/(hu|en))?\/?(\?(([\S]*=[\S]*)+))?$ index.php?page=$1&lang=$3&$5 [L,QSA]
请注意,查询字符串会自动附加到末尾,除非您在规则的目标中构建了自己的查询字符串。这就是为什么第一条规则会保留查询字符串,而第二条规则不会保留的原因。

使用,它会将已经存在的任何查询字符串附加到您在规则目标中构建的查询字符串的末尾:

RewriteRule ^\.([\w\d]+)(\/(hu|en))?\/?(\?(([\S]*=[\S]*)+))?$ index.php?page=$1&lang=$3&$5 [L,QSA]
请注意,查询字符串会自动附加到末尾,除非您在规则的目标中构建了自己的查询字符串。这就是为什么第一条规则会保留查询字符串,而第二条规则不会