Apache Htaccess重写规则
我对.htaccess和rewrite规则很着迷。 我想了解它是如何工作的,我讨厌它,不管怎样,这是我的问题 (对你们大多数人来说都很简单) 我的网站有一个主页Apache Htaccess重写规则,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我对.htaccess和rewrite规则很着迷。 我想了解它是如何工作的,我讨厌它,不管怎样,这是我的问题 (对你们大多数人来说都很简单) 我的网站有一个主页index.php。 这是唯一一个页面,所有其他页面都由这个页面处理 我做了一个简单的重写规则: RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1 为此: /index.php?page=VAL -> /VAL 但我不知道如何为此创建规则: /index.php?page=VAL&
index.php
。
这是唯一一个页面,所有其他页面都由这个页面处理
我做了一个简单的重写规则
:
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1
为此:
/index.php?page=VAL -> /VAL
但我不知道如何为此创建规则:
/index.php?page=VAL&var1=VAL2&var2=VAL3 etc.
我想要一个最终的URL,如:
/VAL/VAL2/VAL3 etc.
谢谢您可以将请求重写为index.php,并使用php解析请求的URI路径:
$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = implode('/', ltrim($_SERVER['REQUEST_URI_PATH'], '/'));
规则是:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ index.php [L]
这将重写每个请求,即URI路径无法映射到现有文件,映射到index.php。好的,如果我理解得很好,重写COND将检查uripath是否不是文件,但您能解释一下重写规则的作用吗?thanks@Marcx:重写规则将重写任何请求,即URI路径(不带路径前缀)不是
index.php
,而是index.php
。谢谢。。所以
notindex.php
(路径前缀)将被重写为index.php
好的,非常感谢..@Marcx:哦,是的,开始处的代码>对表达式求反。因此,如果^index\.php$
不匹配,则应用该规则。