使用 htaccess 隐藏目录

Hide a directory with htaccess

我正在尝试隐藏 url 的目录 users(例如::):meusite.com.br/users/teste 但到目前为止还没有成功。就像通过访问 meusite.com.br/teste 显示文件夹 teste 中的内容,如果访问 URL meusite.com.br/users/teste /users/ 被删除并且只显示 meusite.com.br/teste.

我试过:

RewriteCond %{REQUEST_URI} !^/users
RewriteRule (.*) /users/ [QSA,L]

但是我没有成功。我也试过:

RewriteCond %{REQUEST_URI} !^/users
RewriteRule ^/?([^/]+)$ /users/ [L]

但没有成功。

为了更好地理解,它遵循站点文件夹的部分结构:

├── users
|   ├── teste
|   |   └── index.html
|   └── outroteste
|       └── index.html
├── .htaccess
└── index.php

因为我的文件“htaccess”已经存在:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Rewrites the requested http to https.
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

    # Hide GET variables link.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^posts/(.*) posts.php?p=
</IfModule>

希望能帮到你

您可以在重定向规则下方使用 users 隐藏规则:

DirectorySlash Off
RewriteEngine On

# Rewrites the requested http to https.
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]

# add a trailing slash to directories
RewriteCond %{DOCUMENT_ROOT}/users// -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=302,NE]

RewriteCond %{THE_REQUEST} /users/(\S*)\s [NC]
RewriteRule ^ /%1 [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?((?!users/).*)$ users/ [L,NC]

# Hide GET variables link.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^posts/(.*) posts.php?p= [L,QSA]

但请记住,它会将所有内容转发给 /users/,从而使您的最后一条规则失效。