【发布时间】: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]
结果
乍一看,这将按预期工作。
- http://www.dog.com - 在 [subfolder-dog] 中工作并显示 index.php
- http://www.dog.com/image.jpg - 在 [subfolder-dog] 中工作并显示图像
- http://www.dog.com/animals/frog.jpg - 在 [subfolder-dog/animals] 中工作并显示图像
- http://www.dog.com/animals/ - 在 [subfolder-dog/animals] 中工作并显示 index.php
大问题只出现在没有尾部斜杠的目录上。
- http://www.dog.com/animals - 错误地址栏中的 URL 变为 http://www.dog.com/subfolder-dog/animals。由于某些不可预知的原因,现在子文件夹不再隐藏在地址栏中
当您尝试安装 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