迁移系统与新网址

时间:2012-02-02 01:40:22

标签: .htaccess mod-rewrite lamp

我正在将系统从MVC切换到自定义代码系统。目前我们正在使用此格式的网址:

index.php?part=CAPACITOR&type=CERAMIC&model=0805&page=spec

我现在需要重写网址,比如像

这样的用户更好
mysitecom/CAPACITOR/
mysitecom/CAPACITOR/CERAMIC/
mysitecom/CAPACITOR/CERAMIC/0805/spec.html#2

其中#1和#2是jquery中加载的页面。开发人员使用旧的方式使用/index.php/CAPACITOR/CERAMIC/0805/spec.html

因为我不认为在网址中使用index.php是好的,我该怎么做才能让它更好?

1 个答案:

答案 0 :(得分:7)

以下是您需要使用的内容

RewriteEngine On
RewriteBase /

RewriteRule ^([a-z0-9\-_]+)/?$ index.php?part=$1&type=all&model=all&page=index [L,NC]
RewriteRule ^([a-z0-9\-_]+)/([a-z0-9\-_]+)/?$ index.php?part=$1&type=$2&model=all&page=index [L,NC]
RewriteRule ^([a-z0-9\-_]+)/([a-z0-9\-_]+)/([a-z0-9\-_]+)/?$ index.php?part=$1&type=$2&model=$3&page=index [L,NC]
RewriteRule ^([a-z0-9\-_]+)/([a-z0-9\-_]+)/([a-z0-9\-_]+)/([a-z0-9\-_\.]+)\.html$ index.php?part=$1&type=$2&model=$3&page=$4 [L,NC]

因此,当没有提供文件夹(示例CERAMIC)时,您可以添加一个标志来加载所有相同的模型。这意味着如果仅提供第一部分,则仅使用第一部分。从page.html开始,默认情况下您可以加载索引。

现在,a-z0-9\-_仅表示任何字母,数字,破折号和下划线。您可以使用([^/]+),如果您愿意,可以使用更多字符。

L表示last意味着如果规则匹配,它将停止。 NC表示非大小写,因此A = a或ABC = abc。