.htaccess:使用参数重写 url 不起作用

Posted

技术标签:

【中文标题】.htaccess:使用参数重写 url 不起作用【英文标题】:.htaccess: rewrite url with params wont work 【发布时间】:2014-06-04 17:40:24 【问题描述】:

这是我的 htaccess:

RewriteEngine On

RewriteCond %REQUEST_URI !/(lib|assets|index\.php) [NC]
RewriteRule ^/?$ index.php?p=index [L,QSA]

RewriteCond %REQUEST_URI !/(lib|assets|index\.php) [NC]
RewriteRule ^(.+)$ index.php?p=$1 [L,QSA]


RewriteRule ^(profiles\/\w+)$ index.php?p=profiles

关于最后一条规则,我想重写这个网址:

/profiles/史蒂夫

index.php?p=profiles&user=Steve

现在,当我进入 mysite/profiles/ 时,它会起作用,但现在我需要添加 &u=Steve,所以:

RewriteRule ^(profiles\/\w+)$ index.php?p=profiles&u=$1

当我访问 mysite/profiles/Steve 时

我会收到 404 错误。

为什么这不起作用以及如何解决?

编辑:

现在我有了这个:

RewriteRule ^profiles/(.+?)/?$ index.php?p=profiles&u=$1 [L,QSA]

(感谢乔恩·林) 但现在我有这个作为输出:(print_r($_GET);):

Array ( [p] => profiles/Steve )

我想要:

Array ( [p] => profiles [u] => Steve )

固定,规则最先于其他重写规则。

【问题讨论】:

【参考方案1】:

您正在围绕“配置文件”创建分组,您只需要路径的第二部分:

RewriteRule ^profiles/(.+?)/?$ index.php?p=profiles&u=$1 [L,QSA]

【讨论】:

@user3144435 不确定如何使用上述规则获得该结果,它对我来说很好。

以上是关于.htaccess:使用参数重写 url 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess url在将php更改为html时重写不起作用

.htaccess 与 EasyPHP:RewriteRule 不起作用

从 Apache (.htaccess) 到 IIS 问题的 URL 重写

htaccess url重定向参数不起作用

.htaccess url rewrite在GoDaddy Shared Server上不起作用,返回了Apache 2.4.3 - 404错误

Htaccess 重写链接在 .htaccess 文件中不起作用