RewriteRule - 只有两个目录和一个文件

时间:2013-02-10 17:50:19

标签: .htaccess mod-rewrite

我正在尝试通过.htaccess重写网址,我想要的是,只有当网址类似于" www.mysite.com/basedir/directory/file.htm&时才会考虑规则#34; 。 我不想要" www.mysite.com/basedir/file.htm" " www.mysite.com/basedir/directory/ directory / file.htm" ,我想要精确描述的结构。目前我正在努力做到这一点:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

这样你就不允许匹配额外的斜杠,只有模式中较早的两个显式斜杠。

另外,您究竟想要与$3匹配的是什么?您只需要在需要匹配的事物周围使用括号。如果$3应与file.htm匹配,那么您可以改为:

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

或者它应该只匹配“file”,然后:

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