我有一个现有的.htaccess文件,如下所示:
Options -Indexes
RewriteEngine On
RewriteBase /
RewriteRule ^posts/(.*)/(.*).html$ index.php?content=blog&postid=$1&kwd=$2
RewriteRule ^aposts/(.*)/(.*).html$ index.php?content=autopost&postid=$1&kwd=$2
RewriteRule ^category/(.*)/(.*).html$ index.php?content=category&cat=$1&otext=$2
RewriteRule ^content/(.*).html$ index.php?content=$1
RewriteRule ^searching/(.*).html$ index.php?content=search&k=$1
RewriteRule ^related/(.*).html$ index.php?content=related&k=$1
RewriteRule ^blog/(.*)/(.*).html$ index.php?content=blog&postid=$1&kwd=$2
RewriteRule ^posts$ index.php?content=blog
RewriteRule ^sitemap\.xml$ sitemap.php [L]
RewriteRule ^robots\.txt$ robots.php [L]
ErrorDocument 404 /404.php
这适用于最初用于根域地址访问者的方式。
我现在想要的是添加接受目录的功能,例如:
example.com/directory1
或
example.com/dir1/dir2/dir3/dir4
但我希望它保持与目前相同的功能。
我希望这是有道理的,但请随时要求澄清。
感谢任何帮助。
答案 0 :(得分:1)
RewriteRule ^posts/(.*)/(.*).html$ index.php?content=blog&postid=$1&kwd=$2
此规则始终仅在URI以" posts"开头时匹配。
要在此规则之前允许一个或多个子目录,您希望在"帖子":
之前查找一个或多个字符后跟/
(.+/)?
这会选择"一个或多个任何字符,然后是/
",零或一次。因为"任何角色"还包括一个斜杠,这对于任何数量的子目录都是有效的,只要在最后一次斜杠之后发布" posts"出现。
由于引入了一组额外的括号,您现在需要访问$2
和$3
。
所以你的规则变成了:
RewriteRule ^(.+/)?posts/(.*)/(.*).html$ index.php?content=blog&postid=$2&kwd=$3
您可以将其应用于每个规则。