编辑现有的.htaccess也可以使用子目录

时间:2014-09-22 22:32:02

标签: .htaccess subdirectory

我有一个现有的.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

但我希望它保持与目前相同的功能。

我希望这是有道理的,但请随时要求澄清。

感谢任何帮助。

1 个答案:

答案 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

您可以将其应用于每个规则。