使用htaccess隐藏目录

Igo*_*gor 5 .htaccess mod-rewrite url-rewriting pretty-urls

我正在尝试隐藏usersurl 的目录(例如:):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/$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)

但我没有成功.我也尝试过:

RewriteCond %{REQUEST_URI} !^/users
RewriteRule ^/?([^/]+)$ /users/$1 [L]
Run Code Online (Sandbox Code Playgroud)

但没有奏效.

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

??? users
|   ??? teste
|   |   ??? index.html
|   ??? outroteste
|       ??? index.html
??? .htaccess
??? index.php
Run Code Online (Sandbox Code Playgroud)

正如我的文件'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=$1
</IfModule>
Run Code Online (Sandbox Code Playgroud)

我希望你能提供帮助.

anu*_*ava 2

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/$1/ -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/$1 [L,NC]

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

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

  • @Igor 将 `RewriteRule ^/?((?!users/).*)$` 更改为 `RewriteRule ^((?!users/|posts/).*)$` (2认同)