我正在尝试将一些简单的.htaccess重写转换成xml;大多数重写都很好,但是涉及查询字符串的重写遇到了特别的问题。
下面是.htaccess规则:
RewriteRule ^table/([a-zA-Z0-9\-_]+)/delete/([^/\.]+)$ table-index.php?mode=delete&type=$1&id=$2 [QSA,L]下面是我是如何翻译的:
<rule name="delete">
<match url="^table/([a-zA-Z0-9\-_]+)/delete/([^/\.]+)$" ignoreCase="true" />
<action type="Rewrite" url="table-index.php?mode=delete&type={R:1}&id={R:2}" appendQueryString="true" />
</rule>从本质上讲,我对此所做的与我对所有其他(有效)规则所做的是相同的,但这一条不是在玩球。惟一的区别是,该规则在.htaccess中有一条[QSA]指令,我将其转换为appendQueryString="true"。
该规则并没有破坏IIS,只是它也不起作用--应该显示为:
http://my.site/admin/table/mailing-list/delete/1?confirm=true显示为
http://my.site/admin/table-index.php?confirm=true它丢失了相当多的重要信息,并导致本应发生的事情没有发生……当URL中没有?confirm=true查询字符串时,同样的规则也可以正常工作。
有人能帮上忙吗?
发布于 2012-07-05 10:01:06
我再看了一遍,找到了我自己的解决方案。重写规则没有错,相反,我依赖于我的一个链接$_ server‘’REDIRECT_URL‘中的apache服务器变量,而IIS没有提供它,相反,$_SERVER’‘REQUEST_URI’为我修复了它。
这不会产生任何错误,因为我已经预料到一些服务器可能不会给出变量,并回退到另一个服务器--但在我更改系统以使用导致问题的部分重写的URL之前,这些代码就已经写好了……!
https://stackoverflow.com/questions/11017701
复制相似问题