如果QUERY_STRING
符合使用该规则的内容,我该怎么做呢?
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)/?$ index.php?uri=$1 [L,QSA]
RewriteCond %{QUERY_STRING} uri=admin
ReqriteRule ^admin\?(.*)/?$ index.php?uri=admin&q=$1 [L,QSA]
EG。 http://localhost/admin?poll/new
在?
应该是参数q
之后,查询将为uri=admin&q=poll/new
我对如何做到这一点有任何想法?
感谢。
答案 0 :(得分:1)
嗯,碰巧你的问题比我给你的链接更简单,因为你不想对查询字符串内容进行任何分析。
如果您使用此单行:
RewriteRule ^admin index.php?uri=admin&q= [L,QSA]
其中QSA意味着将查询字符串附加到结果中。您将获得内部重定向:
index.php?uri=admin&q=&poll/new
哪个不行,这是因为您使用参数(admin?poll/new
)的方式不是标准方式。因此,我们似乎需要捕获查询字符串内容并将其手动放在rewriteRule上。这应该有用(如果你只需要/ admin url):
RewriteCond %{REQUEST_FILENAME} admin [NC]
RewriteCond %{QUERY_STRING} (.*) [NC]
RewriteRule .* index.php?uri=admin&q=%1 [L]
其中%1是RewriteCond中的第一个括号匹配:(.*)
,表示查询字符串中的所有内容,查询字符串是问号后面的任何内容。所以实际上这允许admin?poll/new
,但admin?poll/new&foo=toto
允许index.php?uri=admin&q=poll/new&foo=bar