我正在尝试通过.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之后接受任意数量的目录 谢谢你的帮助
答案 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]