php - 使用 Controller 和操作作为查询字符串美化 url

标签 php .htaccess url-routing

我正在从头开始创建自定义 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 标志的地方。默认情况下,如果不指定查询字符串,它将重新使用原始请求的查询字符串。如果您指定查询字符串,它将覆盖它。如果您使用QSAqsappend(查询字符串附加)标志,它将把原始查询字符串附加到新查询字符串中。请参阅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/

相关文章:

php - 使用 PHP 解决/关闭 JIRA 中的问题

apache - .htaccess 影响其他文件 url

javascript - 如何向实际的 post 请求添加额外的 req.body 属性,然后以 Express 方式重定向它

javascript - 如何为 meteor 网站添加菜单/子主题?

php - 为什么这个 htaccess 文件在 wamp 服务器中不起作用

asp.net-mvc - ASP.NET MVC : Form Input to pretty URLs

php - 如何创建库

PHP:显示 HTML 的前 500 个字符

php - 使用 Zend_Db 进行读/写分割

asp.net-mvc - 阻止 bingbot 抓取我的网站