微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.htaccess > 将所有子文件夹重定向到根目录忽略尾部斜杠

如何解决.htaccess > 将所有子文件夹重定向到根目录忽略尾部斜杠

我的天哪 - 我讨厌 .htaccess ......并且不明白任何东西到底是如何工作的。 我试图忽略“子文件夹”并将它们用作访客识别符。 例如:

User types > http://subdomain.domain.com/guest_id

Server sends > http://subdomain.domain.com/index.PHP

browser shows > http://subdomain.domain.com/guest_id

我的 htaccess 文件

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.PHP [NC]

代码效果很好......除非有一个斜杠。 在这种情况下,所有文件都用作“index.PHP”。 主 Index.PHP 显示正常,但所有外部脚本 / css / 等都作为 /guest_id/index.PHP(因此...不加载)。

仅供参考,可能存在冲突,因为我的“子域”实际上是在隐形服务 domain.com/event/

我一直在尝试如此多的排列……但没有真正了解 htaccess 的工作原理。

非常感谢您的帮助。 1,000 提前致谢! 达米安

解决方法

当您拥有 http://subdomain.domain.com/guest_id/ 等 URL 并且为您的 css/js/images 使用相对链接时,浏览器会尝试通过在链接前加上当前路径来解析所有链接,因此 {{1 }} 解析为 src='image.png' 而不是 http://subdomain.domain.com/guest_id/image.png

您可以有一个规则来强制删除所有非目录 URL 末尾的尾部斜杠。

http://subdomain.domain.com/image.png

您也可以将其添加到页面 HTML 的 RewriteEngine On # Unless directory,remove trailing slash RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/+$ RewriteRule ^ %1 [R=301,NE,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L] 标记下方:

<head>

这样每个相对 URL 都是从该基本 URL 而不是从当前页面的 URL 解析的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。