我正试图美化一个网址,以便从丑陋的东西中走出来:
www.domain.com/lookup.php?firstname=jack&middlename=ron&lastname=paul
到
www.domain.com/n/jack/ron/paul
我在服务器上有其他一些重写工作,但这个似乎不喜欢我,因为我得到了404.这是我正在尝试的:
RewriteRule ^/n/(.*)/(.*)/(.*)$ lookup.php?firstname=$1&middlename=$2&lastname=$3
我错过了什么?为什么不起作用?
像这样更简单的工作正常:
RewriteRule ^article/(.*)$ articles.php?article_id=$1
要做一个更复杂的事情还需要做些什么?
答案 0 :(得分:1)
这不起作用,因为你在htaccess文件中有规则。当通过htaccess文件中的重写规则处理URI时,始终会删除前导斜杠(或“前缀”)。这意味着:
# here-------v
RewriteRule ^/n/(.*)/(.*)/(.*)$ lookup.php?firstname=$1&middlename=$2&lastname=$3
模式中的前导斜杠会导致它永远不匹配,因为htaccess文件中的所有URI都将其剥离。在htaccess文件中重写规则基本上类似于<Directory>
容器中的规则。试着摆脱那种斜线。
答案 1 :(得分:0)
我必须看到更多你的httpd配置,但这里有一些注释: