【问题标题】:How do you hide the subfolder using a htaccess file?如何使用 htaccess 文件隐藏子文件夹?
【发布时间】:2014-07-23 15:35:13
【问题描述】:

我知道这个问题已经以一种或另一种方式提出,但问题描述和答案都没有工作/令人满意。所以我尽量把这个问题解释清楚。

示例文件夹结构

.htaccess
index.php
[subfolder-dog]
---- index.php
---- image.jpg
---- [animals]
--------- index.php
--------- cat.jpg
--------- dog.jpg
--------- frog.jpg

示例域

  • www.dog.com

意图

访问 www.dog.com 网站的访客,应显示子文件夹内容,而无需在 URL 中显示子文件夹。为了更清楚地说明这一点。 http://www.dog.com/image.jpg 应该显示图像并将其保留在 URL 中,而不是突然显示 http://www.dog.com/subfolder-dog/image.jpg

HTACCESS(目前为止)

# Turn on Apache mod_rewrite
RewriteEngine on 
Options +FollowSymlinks 
RewriteBase /

# IF THE HOST COMES FROM THE DOMAIN WWW.DOG.COM
RewriteCond %{HTTP_HOST} ^www.dog.com$ [NC]

# AND IF THE REQUESTED URL DOES NOT ALREADY CONTAIN THE SUBFOLDER-DOG
RewriteCond %{REQUEST_URI} !^/subfolder-dog/.*$ [NC]

# REWRITE BY PREPENDING EVERY REQUEST WITH SUBFOLDER-DOG
RewriteRule (.*) subfolder-dog/$1 [L]

结果

乍一看,这将按预期工作。

大问题只出现在没有尾部斜杠的目录上。

当您尝试安装 WordPress 时,这将变得非常烦人!将所有 WordPress 文件放入 subfolder-dog 文件夹并转到 http://www.dog.com 时,一切似乎都很正常。单击“创建配置文件”按钮时,地址栏现在显示http://www.dog.com/subfolder-dog/wp-admin/setup-config.php。当您通过从 URL 中删除子文件夹来更正 URL 时,它会再次请求文件并再次工作。

我已经在这个问题上纠结了一周,希望有人能对这个问题有所了解。它开始让我发疯了。

【问题讨论】:

    标签: php wordpress .htaccess mod-rewrite redirect


    【解决方案1】:

    尝试以下方法:

    RewriteEngine On
    RewriteRule ^$ subfolder-dog/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ subfolder-dog/$1
    

    RewriteEngine On
    RewriteBase /
    
    # Add trailing slash if path does not contain a period or end with a slash
    RewriteCond %{REQUEST_URI} !(\.|/$)
    RewriteRule (.*) http://www.yoursite.com/$1/ [R=301,L]
    
    #Change http://yoursite.com to http://www.yoursite.com (Optional)
    RewriteCond %{HTTP_HOST} ^yoursite.com$
    RewriteRule ^/?(.*)$ http://www.yoursite.com/$1 [R=301,L]
    
    #Rewrites http://www.yoursite.com/subdir to http://www.yoursite.com/
    RewriteCond %{REQUEST_URI} !^/subdir
    RewriteRule ^(.*)$ subdir/$1 [L]
    

    希望对你有帮助!!!

    【讨论】:

    • 感谢您的回复,我马上去看看。等等。
    • 不,同样的错误发生了。访问shishaxite.com/comingsoon时检查可寻址(不带斜杠)
    • 它在我的本地机器上工作,这仅适用于单个子文件夹
    • 我也在使用一个子文件夹。我将在不同的托管环境中尝试您的方法。走着瞧吧。所以你说当你不使用斜杠时你不会看到子文件夹出现?
    • 实际上,当我使用斜杠时,它正在工作。只需尝试从 htaccess 的第二行删除尾部斜杠,不确定它是否会起作用。即使这样做,让我们看看结果如何。
    猜你喜欢
    • 2020-07-05
    • 2010-11-25
    • 1970-01-01
    • 2015-04-09
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    相关资源
    最近更新 更多