我想做以下事情:
要求:
http://www.mydomain.com/show/requested/path/here?some=var&some_other=var
应该转发给
index.php?s=show/requested/path/here&some=var&some_other=var
(我的代码的最后 3 行,据我所知,我认为它们是正确的)
如果用户试图通过 get 请求发送一个名为“s”的 var,他应该被转发到
index.php?s=error
IE:
http://www.mydomain.com/show/requested/path/here?s=var
http://www.mydomain.com/show/requested/path/here?a=b&s=var
http://www.mydomain.com/show/requested/path/here?a=b&s=var&c=d
http://www.mydomain.com/show/requested/path/here?a=b&s
http://www.mydomain.com/show/requested/path/here?s
我的问题是:下面的代码真的正确吗?它似乎与 5 个案例相匹配。但我不知道它是否与它不应该匹配的其他情况相匹配。我的目标是不允许通过获取请求发送一个名为“s”的变量。
我的 .htaccess 的内容:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)(\?|&)s=?(.*)$ [NC]
RewriteRule ^(.*)$ index.php?s=error [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?s=$1 [L,QSA]