0

我正在尝试通过 .htaccess 重写 URL,我想要的是仅当 URL 类似于"www.mysite.com/basedir/directory/file.htm"时才考虑规则。我不想要"www.mysite.com/basedir/file.htm""www.mysite.com/basedir/directory/directory/file.htm",我想要确切描述的结构。目前我正在尝试这样做:

RewriteRule ^(basedir)/([^/\.]+)/(.*)\.(htm)$    /template.php?&page=$3   [L]

但它不起作用。它接受 basedir 之后的任意数量的目录。
谢谢你的帮助

4

1 回答 1

0

您的第二个匹配区域需要像第一个一样具有字符排除:

RewriteRule ^(basedir)/([^/\.]+)/([^/]*)\.(htm)$    /template.php?&page=$3   [L]

这样你就不允许匹配额外的斜线,只有模式中前面的两个显式斜线。

另外,你到底想匹配$3什么?您只需要在需要匹配的内容周围使用括号。如果$3应该匹配file.htm,那么您可以改为编写:

RewriteRule ^basedir/[^/\.]+/([^/]*\.htm)$    /template.php?&page=$1   [L]

或者如果它应该只匹配“文件”,那么:

RewriteRule ^basedir/[^/\.]+/([^/]*)\.htm$    /template.php?&page=$1   [L]
于 2013-02-10T18:16:51.547 回答