我开发了我的网站自定义小MVC框架。 它的index.php检查$ _ POST [“页”] $ _ POST [“子页”],并包括指定的参数相关的PHP文件。
实施例:index.php页面=食品 (包括观看/ foods.php)
实施例:index.php页面=食品&子页=比萨饼 (包括观看/食品/ pizza.php)
现在我想用的.htaccess清理我的网址。 我试过一些方法来传递第二个参数。 但我失败了。 这工作得很好...
RewriteEngine on
RewriteRule ^([^/\.]+)?$ index.php?page=$1 [L]
但是,当我试图通过第二个参数它不工作的罚款。 这一变化的CSS / JS / iamges路径。
RewriteEngine on
RewriteRule ^([^/\.]+)?$ index.php?page=$1
RewriteRule ^([^/\.]+)/([^/\.]+)?$ index.php?page=$1&sub=$2
如果您使用QSA(查询字符串Apend)标志,你可以简单地通过整个请求字符串的索引文件 -
QSA -附加从原来的请求URL的任何查询字符串在重写目标创建的任何查询字符串
所以,你的规则看起来与此类似 -
RewriteRule %{REQUEST_FILENAME} !-d
RewriteRule %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?uri=$1 [QSA,L]
在你的索引文件,你可以.explode()
用斜杠-
$splitArr = explode('/',$_GET['uri']);
和/或使用内置的parse_url()
函数- http://www.php.net/manual/en/function.parse-url.php
parse_url
-解析URL,返回其组成部分
大多数这种类型的网址重写器明确排除的文件/目录实际上存在:
RewriteRule %{REQUEST_FILENAME} !-d
RewriteRule %{REQUEST_FILENAME} !-f
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteRule ^public/(js|css|images)(/.*|$) - [L]
RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]
下面是最后我已经做到了!