htaccess url alias / clean urls - php

时间:2012-12-11 11:15:55

标签: php .htaccess mod-rewrite url-rewriting

您好我已经尝试了一周,在我的自定义网站上修复了一些网址,但我无法完成我想要的100%。所以这是我的问题:

我有一个php登陆页面来管理默认url结构的事件:

foreach($resultSet as $key => $event)
{
    echo '<a href="/event.php?eid='.$event['eid'].'&cat='.$event['categroy'].'&title='.urlencode($event['title']).'">content</a>';
}

正如您所看到的,url格式是这样的

/event.php?eid=145&cat=metal&title=Great+gig

通过htaccess,我希望它是这样的

domain.com/event/metal/Great gig

我一直在阅读htaccess指南,但我不能让它在网址上使用更多tahn 1 params请告知,谢谢。

1 个答案:

答案 0 :(得分:0)

  1. 更改您的PHP代码,使其生成类似domain.com/event/metal/Great gig的网址:

    echo '<a href="/event/'.$event['eid'].'/'.$event['categroy'].'/'.urlencode($event['title']).'">content</a>';
    

    (请注意,'category'在您的示例中有误)

  2. 文档根目录中的htaccess文件中添加这些规则,最好是您可能已经存在的规则之上:

    RewriteEngine On
    RewriteRule ^/?event/([^/]+)/([^/]+)/(.+)$ /event.php?eid=$1&cat=$2&title=$3 [L,QSA]
    
  3. 此外,如果您的控件之外的链接仍然具有查询字符串,则可以添加以下规则:

    RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /event\.php\?eid=([^&]+)&cat=([^&]+)&title=([^\ ]+)
    RewriteRule ^ /event/%2/%3/%4? [L,R=301]