我知道这个问题已经以这种或那种方式提出,但问题描述和答案都没有起作用/令人满意。所以我试着尽可能清楚地解释这个问题。
样本文件夹结构
.htaccess
index.php
[subfolder-dog]
---- index.php
---- image.jpg
---- [animals]
--------- index.php
--------- cat.jpg
--------- dog.jpg
--------- frog.jpg
SAMPLE DOMAIN
强度的探讨
访问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时,它会再次请求文件,然后再次运行。
我已经在这个问题上坚持了一个星期了,希望有人可以对这个问题有所了解。它开始让我发疯。
答案 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]
希望这能帮到你!!!