如何使用htaccess文件隐藏子文件夹?

时间:2014-06-03 10:27:40

标签: php wordpress .htaccess mod-rewrite redirect

我知道这个问题已经以这种或那种方式提出,但问题描述和答案都没有起作用/令人满意。所以我试着尽可能清楚地解释这个问题。

样本文件夹结构

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

SAMPLE DOMAIN

  • www.dog.com

强度的探讨

访问www.dog.com网站的访客应该看到子文件夹内容,而不会在URL中显示子文件夹。为了使这更清楚。 http://www.dog.com/image.jpg应该显示图片并将其保留在网址中,而不是突然显示http://www.dog.com/subfolder-dog/image.jpg

HTACCESS(SO FAR)

# 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]

RESULT

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

这个大问题只发生在没有尾部斜杠的目录上。

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

我已经在这个问题上坚持了一个星期了,希望有人可以对这个问题有所了解。它开始让我发疯。

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

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

OR

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]

希望这能帮到你!!!