如何解决.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 举报,一经查实,本站将立刻删除。