使用PHP在IIS URL重写后获取URL参数

3
我有一个PHP网站,例如:http://www.test.com/rewrite-test/s/z2SZhBL。之前这个网站在Apache上运行,使用$_GET['id']的重写规则逮住了“z2SZhBL”。
RewriteEngine on
RewriteRule ^([^/\.]+)/?$ /index.php?id=$1 [L]

我需要将这个网站移至IIS,并使URL重写规则生效。我已经尝试了这些示例:http://www.iis.net/learn/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module。 在“rewrite-test”文件夹中,我有一个index.php文件,其中输出了$_GET变量,但没有任何get变量返回,它们全部为空。 我可以使用这种解决方法获取变量。
$params = explode( "/", $_SERVER['HTTP_X_ORIGINAL_URL'] );
print_r($params);

这是最好的解决方案吗?


你只是在征求意见吗? - davejal
1
我在想这是否是正确的方法,在变量被重写后检索它们,感觉我所做的可能是一种hack/workaround,如果变量不能通过$_GET获得,也许我所做的是正确的。 - davesherlock
只需将您的 .htaccess 文件导入到 URL 重写器中。这个向导有一个小链接。所有相同的规则和技术都可以使用。IIS 将捕获并重写它为 index.php?id=$1,因此您可以继续使用 $_GET - Twisty
http://www.iis.net/learn/extensions/url-rewrite-module/importing-apache-modrewrite-rules - Twisty
1个回答

0

我的问题更多关于当你设置好规则后如何获取变量,目前我正在使用$params = explode( "/", $_SERVER['HTTP_X_ORIGINAL_URL'] ); - davesherlock
如果规则正常工作,您将像以前一样使用 $_GET['id']。两者都可以工作,只是似乎要拆分URL很麻烦。此外,您得到的数据没有索引。 - Twisty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接