【问题标题】:Hide a directory with htaccess使用 htaccess 隐藏目录
【发布时间】:2015-07-10 21:56:47
【问题描述】:

我试图隐藏一个目录 users 的 url (ex.:): meusite.com.br/users/teste 但到目前为止还没有成功。像这样通过访问meusite.com.br/teste显示文件夹teste中的内容,如果访问URLmeusite.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>

希望你能帮忙。

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting pretty-urls


    【解决方案1】:

    您可以在重定向规则下方使用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/,从而使您的最后一条规则失效。

    【讨论】:

    • 当输入meusite.com.br/users/teste 时保持不变,并且在访问meusite.com.br/teste 时,他为meusite.com.br/users/teste 重写,我需要完全相反。如果您访问meusite.com.br/users/teste,则重写为meusite.com.br/teste。谢谢兄弟,再次为我的英语不好感到抱歉。
    • 如果我访问meusite.com.br/users/teste,它会正确地重写为meusite.com.br/teste,但没有出现任何内容,并且出现以下消息“此网页有重定向循环。”如果我访问meusite.com.br/teste 他为meusite.com.br/users/teste 重写并显示相同的消息。 (在这种情况下不应该重写)。
    • 检查另一个更新。由于teste 是一个目录,因此您应该输入带有斜杠的meusite.com.br/teste/。它将在内部打开meusite.com.br/users/teste/
    • # add a trailing slash to directories 规则的另一个小更新。它应该添加一个尾随/ 并使其成为meusite.com.br/teste/。如果这不起作用,请尝试:Options All
    • @Igor 将 RewriteRule ^/?((?!users/).*)$ 更改为 RewriteRule ^((?!users/|posts/).*)$
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2017-08-03
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2015-07-12
    相关资源
    最近更新 更多