我正在从头开始创建自定义 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 )
到此为止就可以了。但我的问题是,如果我在查询字符串中有任何额外的参数,我无法得到它。
即。如果我打印 http://domain.com/post/create?id=1
的 $_GET
,我不会获得 id
。
任何帮助将不胜感激
最佳答案
这正是创建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]
关于php - 使用 Controller 和操作作为查询字符串美化 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24545272/