Htaccess重写规则

时间:2010-03-12 20:55:24

标签: apache .htaccess mod-rewrite

我对.htaccess和重写规则感到疯狂。 我想知道它是如何工作的,我讨厌它,无论如何这里是我的问题。

(对你们大多数人来说真的很简单)

我的网站有一个主页index.php。 这是唯一的页面,所有其他页面都由此处理。

我做了一个简单的RewriteRule

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1

这样做:

/index.php?page=VAL -> /VAL

但我不知道如何为此制定规则:

/index.php?page=VAL&var1=VAL2&var2=VAL3 etc.

我想要一个最终的网址,如:

/VAL/VAL2/VAL3 etc.

由于

1 个答案:

答案 0 :(得分:1)

您可以将请求重写为 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