htaccess以及两位内线参数(htaccess and two post parameters)

2019-09-20 01:59发布

我开发了我的网站自定义小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

Answer 1:

如果您使用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,返回其组成部分



Answer 2:

大多数这种类型的网址重写器明确排除的文件/目录实际上存在:

RewriteRule %{REQUEST_FILENAME} !-d
RewriteRule %{REQUEST_FILENAME} !-f


Answer 3:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteRule ^public/(js|css|images)(/.*|$) - [L]
RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]

下面是最后我已经做到了!



文章来源: htaccess and two post parameters