.htaccess在格式化

时间:2017-03-17 20:08:44

标签: apache .htaccess

我有以下网址: example.com/respond/admin/94

我在admin文件夹中使用以下.htaccess文件,取94或任何id,并将其替换为查询字符串参数:

RewriteOptions inherit

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /respond/admin/?alarm=$1 [L]

但是,可以通过JavaScript动态地将更多查询字符串参数添加到URL中: example.com/respond/admin/94?parameter=value

我无法将JavaScript修改为使用&而不是?s,因为它在我们的网站上全局使用。它只检查问号是否已存在,如果是,则使用&符号代替。所以我的问题是:如何在我的.htaccess文件中保留id格式的同时用& s替换一个或多个?我已经尝试了一些我找不到的例子

我已经提到了apache mod_rewrite文档。

1 个答案:

答案 0 :(得分:0)

当您添加自己的查询字符串但又想保留现有查询字符串时,必须使用QSA|qsappend标记

  

当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志会导致查询字符串合并。

所以你的规则将成为

RewriteRule ^(.*)$ /respond/admin/?alarm=$1 [QSA,L]