我正在从头开始创建自定义PHP MVC模式。这就是我的网址的样子
http://domain.com/post/create
我可以使用以下htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+) index.php?controller=$1&action=$2 [L]
所以,当我打印我的$_GET
时,我得到了这个
Array ( [controller] => post [action] => create )
到目前为止这很好。但我的问题是,如果我在查询字符串中有任何额外的参数,我就无法得到它。
即。如果我为$_GET
打印http://domain.com/post/create?id=1
,则表示我没有id
。
非常感谢任何帮助
答案 0 :(得分:3)
这正是创建QSA
标志的位置。默认情况下,如果未指定查询字符串,它将重新使用原始请求的查询字符串。如果指定查询字符串,它将覆盖它。如果使用QSA
或qsappend
(查询字符串追加)标志,它会将原始查询字符串附加到新查询字符串。有关详细信息,请参阅this documentation document。
你的规则最终会像这样:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+) index.php?controller=$1&action=$2 [QSA,L]