5

我正在尝试隐藏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]

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

RewriteCond %{REQUEST_URI} !^/users
RewriteRule ^/?([^/]+)$ /users/$1 [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=$1
</IfModule>

我希望你能帮忙。

4

1 回答 1

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]

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

于 2015-05-01T02:04:58.580 回答