,我有以下我.htaccess
文件措辞:简单重写规则不工作,因为它应该
Options -Indexes
RewriteEngine on
RewriteBase /properties/
RewriteRule ^view/([0-9]+)$ view.php?id=$1 [QSA]
我想写一个“漂亮”的网址像http://example.com/properties/view/1到http://example.com/properties/view.php?id=1。
RewriteRule
正在将请求传递给我的view.php
脚本,但它似乎没有执行查询字符串位。例如,如果我这样做print_r($_SERVER)
我看到以下内容:
Array
(
...
[DOCUMENT_ROOT] => /Users/Martin/Sites/[removed]/
...
[SCRIPT_FILENAME] => /Users/Martin/Sites/[removed]/properties/view.php
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /properties/view/1
[SCRIPT_NAME] => /properties/view.php
[PATH_INFO] => /1
[PATH_TRANSLATED] => /Users/Martin/Sites/[removed]/1
[PHP_SELF] => /properties/view.php/1
...
)
为什么QUERY_STRING
空?为什么我不能通过$_GET['id']
访问“1”?
注意:显然我已将[removed]
标记放置在文件路径中。
的[重写规则的QS(http://wiki.apache.org/httpd/RewriteQueryString)似乎是正确的。你不应该,但是可以尝试`[NC,L,QSA]`然而。可能会显示一个`REDIRECT_QUERY_STRING` env变量吗?否则,你可能必须设置`RewriteLog`才能找到。 – mario 2011-12-14 18:16:21
您确定没有其他规则先运行? – 2011-12-14 18:17:53
我已经用我的`.htaccess`文件的全部内容更新了OP。 – 2011-12-14 18:24:25