用RewriteRule重写两个变量

时间:2012-12-01 03:22:47

标签: php

我有这样的代码:

  echo "  <td width='57%' height='126' class='bord' ><a href='$category_name-$id.htm'
  class='title_style'>" . $title . "</a><br />
   ";

因此,$ category_name是数据库中类别的名称。所以它改变了!

我需要使用RewriteRule重写它。我尝试过这样的事情

   Options +FollowSymlinks
   RewriteEngine on
   RewriteRule ^([a-zA-Z0-9-]+)-([0-9]+)\.htm$  classified.php?id=$1 [L]

EX: 假设$ category_name = Cars和$ id = 15,那么网址应该是:Cars-15.htm

我提前感谢你

1 个答案:

答案 0 :(得分:0)

我怀疑你只想得到传入路径名的数字部分。

到目前为止你的正则表达式是正确的,但你使用了错误的占位符。 $1用于第一个捕获组,即您的类别中的类别。 $2包含第二个匹配组内容,即数字ID。

所以你的RewriteRule应该是:

RewriteRule ^([a-zA-Z0-9-]+)-([0-9]+)\.htm$  classified.php?id=$2 [L]

可以进一步简化btw:

RewriteRule ^([\w-]+)-(\d+)\.htm$  classified.php?id=$2 [L]

(虽然也会在类别部分匹配下划线。)