0
我试图完成下列搭配:的.htaccess重写规则有两个变量,但只显示最后一个
/author.php?author_id=4&author=joe
/joe
我能得到尽可能只显示AUTHOR_ID,就像这样:
RewriteRule ^([0-9]+)/?$ author.php?author_id=$1 [NC,L]
但我不清楚如何从那里继续。
感谢
我试图完成下列搭配:的.htaccess重写规则有两个变量,但只显示最后一个
/author.php?author_id=4&author=joe
/joe
我能得到尽可能只显示AUTHOR_ID,就像这样:
RewriteRule ^([0-9]+)/?$ author.php?author_id=$1 [NC,L]
但我不清楚如何从那里继续。
感谢
如果我理解正确你的问题:
你的问题基本上是你试图加载从公共URI要包含只有一个变量有两个变量:
浏览器使用指向/joe
的链接,因此htaccess需要从这个单值文本链接中发现author_id
和author
值。
这显然不能做到。
这类问题是一个引起流行mod_rewrites为“folderise”的网址,比如/author/4/joe
,所以需要的信息都方面都存在于URI(4
和joe
),但仍然URI“友好”。
要应用这种形式的解决方案,您定的URI:
RewriteRule ^/author/([0-9]+)/?(.*)$ /author.php?author_id=$1&author=$2 [NC,L]
/author/
==只有一个文件夹,用户清晰度非常有用(谁或什么是乔?)。 /author/
夹只是用于说明目的。此文件夹不存在。)([0-9]+)
==数字只值,保存在括号稍后用作第一变量($1
)作为读取从左到右。 +
表示贪心,需要尽可能多的字符(在此情况下,位数)为可用到达非数字/?
==方法的可选字符(此情况下的斜线)(.*)
为第二==括号前保存字符串($2
),此时任何字符(.
)为任意长度(*
)。 $
==美元符号显示要重写的URI字符串的末尾。 这将有一个URI /author/4/joe
将加载的页面(从浏览器隐藏)/author.php?author_id=4&author=joe
。
其他变化可能是诸如/4-joe
或/4joe
之类的东西作为URL等等,每个包含author.php
页面的两个必需数据片段。
好的。我现在明白了。感谢您的解释。 –