Php 使用控制器和操作作为查询字符串美化url
我正在从头开始创建一个定制的PHP MVC模式。这就是我的url的样子Php 使用控制器和操作作为查询字符串美化url,php,.htaccess,url-routing,Php,.htaccess,Url Routing,我正在从头开始创建一个定制的PHP MVC模式。这就是我的url的样子 http://domain.com/post/create 我可以通过以下htaccess RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/([^/]+) index.php?controller=$1&action=$2 [L] 所以,当我打
http://domain.com/post/create
我可以通过以下htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+) index.php?controller=$1&action=$2 [L]
所以,当我打印我的$\u GET
时,我得到了这个
Array ( [controller] => post [action] => create )
到现在为止还可以。但我的问题是,如果我在查询字符串中有任何额外的参数,我就无法得到它
也就是说,如果我打印$\u得到http://domain.com/post/create?id=1
,我没有得到id
任何帮助都将不胜感激这正是创建QSA
标志的地方。默认情况下,如果不指定查询字符串,它将重新使用原始请求的查询字符串。如果指定查询字符串,它将覆盖它。如果使用QSA
或qsappend
(查询字符串附加)标志,它将原始查询字符串附加到新查询字符串。有关更多信息,请参阅
您的规则最终将如下所示:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+) index.php?controller=$1&action=$2 [QSA,L]
您需要[QSA,L]
而不是[L]
,您可能还会发现这一点很有用: