.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 rewrite在GoDaddy Shared Server上不起作用,返回了Apache 2.4.3 - 404错误