首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的mod重写规则不起作用?

为什么我的mod重写规则不起作用?
EN

Stack Overflow用户
提问于 2013-03-01 03:52:23
回答 2查看 65关注 0票数 2

我正在尝试美化一个url,让它从一个丑陋的东西变成:

代码语言:javascript
复制
www.domain.com/lookup.php?firstname=jack&middlename=ron&lastname=paul

代码语言:javascript
复制
www.domain.com/n/jack/ron/paul

我在服务器上有一些其他的重写工作,但这个重写似乎不喜欢我,因为我得到了404。这是我正在尝试的:

代码语言:javascript
复制
RewriteRule ^/n/(.*)/(.*)/(.*)$ lookup.php?firstname=$1&middlename=$2&lastname=$3

我遗漏了什么?为什么这不起作用呢?

像这样更简单的代码可以很好地工作:

代码语言:javascript
复制
RewriteRule ^article/(.*)$ articles.php?article_id=$1

还需要做什么才能做更复杂的事情?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-01 06:07:22

这不起作用,因为您在htaccess文件中有规则。当重写规则在htaccess文件中处理URI时,前导斜杠(或“前缀”)总是被去掉。这意味着:

代码语言:javascript
复制
# here-------v
RewriteRule ^/n/(.*)/(.*)/(.*)$ lookup.php?firstname=$1&middlename=$2&lastname=$3

模式中的前导斜杠导致它永远不匹配,因为htaccess文件中的所有URI都将其去掉。重写htaccess文件中的规则本质上类似于<Directory>容器中的规则。试着去掉那个斜杠。

票数 1
EN

Stack Overflow用户

发布于 2013-03-01 04:02:02

我将不得不看到更多的httpd配置,但这里有一些注意事项:

  1. 您的规则末尾似乎没有L,R或L,R=301或L,R=302 (如果这是段中的最后一个规则,则为L,我怀疑它是)。
  2. 您的.*正则表达式可能太贪婪--不确定它们是否会像您希望的那样匹配。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15144417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档