Mod rewrite Drupal mod将目录重写为查询字符串

Mod rewrite Drupal mod将目录重写为查询字符串,mod-rewrite,drupal-7,directory,query-string,Mod Rewrite,Drupal 7,Directory,Query String,我已经在stackoverflow上看到这个问题被问/回答了好几次,但我找不到任何适合我的解决方案。我确信这是我误解mod重写工作原理的一个例子 我正试图重写: 节点/45/done/sid/ 到 节点/45/完成?sid= 我正在使用Drupal,所以已经有一些mod rewrite条目(见下文)可能会干扰我所看到的其他解决方案。对于上面解决的问题,我应该把它放在哪里 <IfModule mod_rewrite.c> RewriteEngine on RewriteRul

我已经在stackoverflow上看到这个问题被问/回答了好几次,但我找不到任何适合我的解决方案。我确信这是我误解mod重写工作原理的一个例子

我正试图重写:

节点/45/done/sid/ 到 节点/45/完成?sid=

我正在使用Drupal,所以已经有一些mod rewrite条目(见下文)可能会干扰我所看到的其他解决方案。对于上面解决的问题,我应该把它放在哪里

<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteRule "(^|/)\." - [F]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^ index.php [L]

  <IfModule mod_headers.c>
    RewriteCond %{HTTP:Accept-encoding} gzip
    RewriteCond %{REQUEST_FILENAME}\.gz -s
    RewriteRule ^(.*)\.css $1\.css\.gz [QSA]

    RewriteCond %{HTTP:Accept-encoding} gzip
    RewriteCond %{REQUEST_FILENAME}\.gz -s
    RewriteRule ^(.*)\.js $1\.js\.gz [QSA]

    RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
    RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]

    <FilesMatch "(\.js\.gz|\.css\.gz)$">
      Header set Content-Encoding gzip
      Header append Vary Accept-Encoding
    </FilesMatch>
  </IfModule>
</IfModule>

重新启动发动机
重写规则“(^ |/)\”-[F]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}=/图标文件
重写规则^index.php[L]
RewriteCond%{HTTP:Accept encoding}gzip
重写cond%{REQUEST_FILENAME}\.gz-s
重写规则^(.*)\.css$1\.css\.gz[QSA]
RewriteCond%{HTTP:Accept encoding}gzip
重写cond%{REQUEST_FILENAME}\.gz-s
重写规则^(.*)\.js$1\.js\.gz[QSA]
重写规则\.css\.gz$-[T=text/css,E=no gzip:1]
重写规则\.js\.gz$-[T=text/javascript,E=no gzip:1]
标题集内容编码gzip
头附加变量接受编码

由于正常的“RewriteRule^index.php[L]”规则具有[L]标志,因此在此标志之后将不再执行任何规则。因此,您需要在该规则之前添加您的规则。“RewriteRule”(^ |/).“-[F]”行是一项安全预防措施,因此我会在这之后立即添加您的规则。我相信如果您不将[L]标志添加到规则中,它将变成默认规则。

谢谢Chris。答案是放在哪里,现在我只需要弄清楚执行重定向所需的语法