首页 > 解决方案 > 重定向有效,但无法加载 .css

问题描述

你好。我有一个受 .htaccess 保护的站点,它将所有内容重定向到 /pb 目录,但可直接访问的 /cron 目录除外(稍后它将受到保护)。我的 htaccess 工作(它根据我的需要重定向)但我无法将我直接调用的 .css .js 文件加载到我的索引页面中。我必须在我的 /pb 目录中放置一个新的 .htaccess 以允许访问 .css 还是可以在我的根 htaccess 中进行?我不明白。

我的 .htaccess 文件(无法删除 https 行“hostinger”)

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} (www\.)?XXXXXXXXX.net
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteRule ^(cron) - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^pb/ - [L]
RewriteCond %{DOCUMENT_ROOT}/pb/$1 -f
RewriteRule (.+) pb/$1 [L]
RewriteRule (.*) pb/index.php?path=$1 [L,QSA]
order deny,allow
deny from all
allow from XX.XXX.XXX.XX

谢谢你的帮助

标签: .htaccess

解决方案


首先,我已经修复了您的 htacces 规则文件,已在规则文件中进行了评论。让您的 htaccess 规则文件如下所示,确保将其放置在 pb 文件夹所在的同一文件夹中。另外,请在测试您的 URL 之前清除您的浏览器缓存。

Options -Indexes -MultiViews
RewriteEngine on
##Apply https rules here.
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?XXXXXXXXX.net [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

##Handling base URI of site.
RewriteRule ^/?$ pb/ [R=301,L]

##Blocking pb uri pages non existing ones.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^pb/ - [NC,L]
##making all uris which are files to pb folder.
RewriteCond %{DOCUMENT_ROOT}/pb/$1 -f
RewriteRule ^(.+)/?$ pb/$1 [L]
##Making non existing uris to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ pb/index.php?path=$1 [L,QSA]

order deny,allow
deny from all
allow from XX.XXX.XXX.XX

JS/CS 重写/重定向:您可能需要使用 base 标签来修复您的 js 和其他相关资源。如果您使用相对路径链接 js 文件,那么该文件显然会得到 404,因为它正在寻找 URL 路径。例如,如果 URL 路径是 /file/ 而不是 file.html,那么您的相关资源将从 /file/ 加载,这不是目录而是重写的 html 文件。要解决此问题,请使您的链接成为绝对链接或使用基本标签。在您的网页标题中添加此<base href="/">内容,以便您的相关链接可以从正确的位置加载。


推荐阅读