0

是否可以重写 url,并且仍然可以使用查询?

我的意思是这样的:http://domain.com/?page=Home&derp=true

并将其重写为:http://domain.com/home.htm?derp=true

所以实际上只是重写第一个查询......

我试过这样做:

RewriteRule ^([a-z]+).htm$ index.php?page=$1

但是无法使用 D 传递参数:

4

2 回答 2

1

哦,伙计,你最好写下你的问题。只需在最后添加[QSA]Docs 即可

RewriteRule ^([a-z]+).htm$ index.php?page=$1 [QSA]

完全没有问题,这只是 PHP 中一些简单的字符串操作,你甚至不需要正则表达式:

function rewrite_url($url) {
    list($prefix, $query) = explode('?', $url, 2) + array('','');
    parse_str($query, $vars);
    if (isset($vars['page'])) {
        $prefix .= $vars['page'] . '.htm';
        unset($vars['page'];
    }
    return $prefix . '?' . http_ build_ query($vars);
}

如果你愿意,你也可以用正则表达式来做到这一点:

$url = preg_replace('/^(.*)$/e', 'rewrite_url(\'$1\')', $url);
于 2012-03-19T16:57:21.663 回答
0

对于 URL 重写考虑使用 Apache 的mod_rewrite引擎

如果 mod_rewrite 不是答案,请考虑至少解释您的应用程序的逻辑、您正在使用的框架和其他细节。

于 2012-03-19T16:52:03.567 回答