htaccess重写规则从URL中删除多个子文件夹

时间:2014-08-17 19:58:13

标签: apache .htaccess mod-rewrite redirect rewrite

由于文件系统子目录限制,我很可能会达到这个目的。我想将/users文件夹分成/users/a/username/users/b/username/users/c/username等。

因此,用户服务器上的数据将位于: www.domain.com/users/a/username/www.domain.com/users/b/username /等

我希望网址为: www.domain.com/users/username/

可选择避免重复内容,从www.domain.com/users/a/username/到www.domain.com/users/username/的301重定向也会很好。

目前我对一个子目录进行了重写(见下文),但我很困惑如何有效地对所有字母子目录进行此操作。

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^users/(.*)$ users/a/$1 [L,NC]

我检查了这个网站,似乎都隐藏了第一个子目录,例如domain.com/folder1/filename.html => domain.com/filename.html但没有更深入的内容。

1 个答案:

答案 0 :(得分:0)

将此代码放入htaccess(必须位于根文件夹中)

Options -Indexes -MultiViews

RewriteMap lowercase int:tolower    # this line in your apache file configuration
RewriteEngine On

RewriteCond %{THE_REQUEST} \s/users/[a-z]/([^/\s]+)\s
RewriteRule . /users/%1/? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^users/([A-Za-z])([^/]+)/$ /users/${lowercase:$1}/$1$2/ [L]