星号脚本不适用于静态网址(RewriteRule)

时间:2012-10-01 20:27:14

标签: php

星号脚本有问题。它与动态网址一起工作正常,例如:

/index.php?md=details&id2

但它不适用于相同的链接,但在静态,例如:

/ads/test-add-idn2.html

重写规则示例:

  

RewriteRule ^ ads /(。) - idn(。)。html $ index.php?md = details& id = $ 2   [L,NE]

使用动态网址而非静态网址的示例“require”:

  

要求( '_星形rating.php'); //获取数据库连接信息

如何调用“_star-rating.php”来处理静态网址?

使用另一个重写规则?

谢谢

3 个答案:

答案 0 :(得分:0)

您没有选择正确的信息:

^ads/(.)-idn(.).html$
            ^^^ a dot can be any character, but only one
     ^^^ same here

您可能需要以下内容:

^ads/([-\w]+)-idn(\d+)\.html$
  • [-\w]+:一个或多个单词字符或-个标志
  • \d+:一个或多个数字

修改:请注意,此(.htaccess文件)仅影响通过网络浏览器/ http调用的网址。当您在php中使用includerequire时,您正在处理本地文件系统,这与任何.htaccess文件无关。

答案 1 :(得分:0)

认为你的规则不正确。尝试:

RewriteRule ^ads/(.*?)-idn(\d+)\.html$ index.php?md=details&id=$2 [L,NE]

答案 2 :(得分:0)

您的重写规则不匹配。如果您尝试在-idn之前捕获URI中的所有内容并获取其后的数字,则需要更改模式,如:

RewriteRule ^ads/(.*)-idn([0-9]*)\.html$ index.php?md=details&id=$2 [L,NE]

请注意,我们使用*来匹配.之前所有文字的通配符-idn。我们还使用字符类[0-9]来指定我们在-idn之后和文字.之前的0或更多数字中感兴趣(必须对其进行转义,以免被视为通配符{{ 1}}。