我尝试重写以下内容
http://example.com/somefile?variable=somevariable
至
index.php?processurl=/somefile?variable=somevariable
我知道我需要使用[QSA]来传递变量,所以我在htaccess中编写了以下代码:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*) index.php?processurl=/$1 [QSA]
然而这个重写规则似乎没有传递变量。我得到的只是index.php?processurl =/somefile
2条答案
按热度按时间gdx19jrr1#
问题
问题在于您对
QSA
标志的理解。该标志的作用是将原始查询字符串附加到重定向的URL中。在某些情况下,如果您希望将另一个参数(或多个参数)附加到查询字符串中,这将非常有用。示例
给定URL:
然后改写规则:
将输出:
在您的例子中,问题是您不希望将查询字符串作为查询字符串追加,而是希望将其作为变量追加;如果这有意义的话...
解决方案
然后,解决方案就是-听起来很简单-将查询字符串作为变量追加...
您可以使用变量
%{QUERY_STRING}
来完成此操作:建议
正如阿努哈瓦所指出的,你也许要补充一句:
这样你就不会不小心重写了错误的网址。
tsm1rwdh2#
您可以尝试以下规则: