.htaccess RewriteRule有两个变量,但只显示最后一个

时间:2017-01-01 23:34:12

标签: apache .htaccess mod-rewrite

我正在努力完成以下比赛:

remote_connect_back

我只能显示author_id,就像这样:

/author.php?author_id=4&author=joe
/joe

但我不清楚如何从那里开始。

由于

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题:

您的问题基本上是在尝试从公共URI加载两个变量,而这些变量只包含一个变量:

浏览器使用指向/joe的链接,因此htaccess需要从此单值文本链接中发现author_idauthor值。

这显然无法做到。

此类问题会导致流行的mod_rewrites对其网址进行“文件管理”,例如/author/4/joe,因此URI中会显示所需信息的两个方面(4和{{1}但是URI仍然是“友好的”。

将此形式的解决方案应用于您的给定URI:

joe
  • 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页面的两条必需数据。