跳转到主要内容
你行网

Main navigation

  • 首页
  • 文章
  • 教程
  • 视频
  • 下载
  • 社区
  • 网站导航
User account menu
  • 登录

面包屑

  1. 首页

drupal .htaccess 文件的配置解释

由 hrs, 31 五月, 2024

# Apache/PHP/Drupal 设置:
#

# 保护文件和目录不被窥视。
<FilesMatch "\.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config|yarn\.lock|package\.json)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$">
 <IfModule mod_authz_core.c>
   Require all denied
 </IfModule>
 <IfModule !mod_authz_core.c>
   Order allow,deny
 </IfModule>
</FilesMatch>

# 不显示映射到目录的URL的目录列表。
Options -Indexes

# 设置默认处理程序。
DirectoryIndex index.php index.html index.htm

# 为SVGZ添加正确的编码。
AddType image/svg+xml svg svgz
AddEncoding gzip svgz

# 以下大多数PHP设置无法在运行时更改。请参阅
# sites/default/default.settings.php 和
# Drupal\Core\DrupalKernel::bootEnvironment() 了解可以在运行时更改的设置。

# PHP 7,Apache 1 和 2。
<IfModule mod_php7.c>
 php_value assert.active                   0
</IfModule>

# PHP 8,Apache 1 和 2。
<IfModule mod_php.c>
 php_value assert.active                   0
</IfModule>

# 需要启用mod_expires。
<IfModule mod_expires.c>
 # 启用到期。
 ExpiresActive On

 # 将所有文件和重定向缓存2周(A)。
 ExpiresDefault A1209600

 <FilesMatch \.php$>
   # 禁止缓存PHP脚本,除非它们自己明确发送缓存头。否则所有脚本都必须覆盖mod_expires设置的头以获得其他缓存行为。如果引导过程中发生错误,可能会失败,如果在子目录中安装了非Drupal的PHP文件,也可能会出现问题。
   ExpiresActive Off
 </FilesMatch>
</IfModule>

# 如果未启用mod_rewrite,则设置回退资源。这允许Drupal在没有清洁URL的情况下工作。这需要Apache版本>= 2.2.16。如果Drupal不是通过顶级URL访问(即:http://example.com/drupal/ 而不是 http://example.com/),需要调整index.php的路径。
<IfModule !mod_rewrite.c>
 FallbackResource /index.php
</IfModule>

# 各种重写规则。
<IfModule mod_rewrite.c>
 RewriteEngine on

 # 添加index.php重定向
 # 将以 "index.php/" 开头的URL使用301重定向到正确的地址:
 RewriteRule ^index.php/$ / [R=301,L]
 RewriteRule ^index.php/(.*) /$1 [R=301,L]

 # 如果通过https://访问,将"protossl"设置为"s"。如果启用了“www.”剥离或强制执行,以确保不会在http和https之间来回跳转。
 RewriteRule ^ - [E=protossl]
 RewriteCond %{HTTPS} on
 RewriteRule ^ - [E=protossl:s]

 # 确保即使在CGI或FastCGI下运行,Authorization HTTP头也可用于PHP。
 RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

 # 阻止访问以句点开头的“隐藏”目录。这包括版本控制系统(如Subversion或Git)用于存储控制文件的目录。文件名以句点开头的文件以及CVS使用的控制文件受到上面的FilesMatch指令保护。
 #
 # 注意:这仅在加载了mod_rewrite时有效。没有mod_rewrite,不可能通过.htaccess阻止整个目录的访问,因为此处不允许使用<DirectoryMatch>。
 #
 # 如果没有安装mod_rewrite,你应该从webroot中删除这些目录或以其他方式保护它们不被下载。
 RewriteRule "/\.|^\.(?!well-known/)" - [F]

 # 如果你的网站可以使用带有和不带有“www.”前缀的地址访问,可以使用以下设置之一将用户重定向到你首选的URL,带或不带“www.”前缀。选择仅一个选项:
 #
 # 要将所有用户重定向到带有“www.”前缀的地址,
 # (http://example.com/foo 将被重定向到 http://www.example.com/foo)
 # 取消注释以下内容:
 # RewriteCond %{HTTP_HOST} .
 # RewriteCond %{HTTP_HOST} !^www\. [NC]
 # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 #
 # 要将所有用户重定向到不带“www.”前缀的地址,
 # (http://www.example.com/foo 将被重定向到 http://example.com/foo)
 # 取消注释以下内容:
 # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
 # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]

 # 如果你在子目录或VirtualDocumentRoot中使用Drupal,并且重写规则无法正常工作,请修改RewriteBase。
 # 例如,如果你的网站位于 http://example.com/drupal,取消注释并修改以下行:
 # RewriteBase /drupal
 #
 # 如果你的网站运行在 http://example.com/ 的VirtualDocumentRoot中,
 # 取消注释以下行:
 # RewriteBase /

 # 将常见的PHP文件重定向到它们的新位置。
 RewriteCond %{REQUEST_URI} ^(.*)?/(install\.php) [OR]
 RewriteCond %{REQUEST_URI} ^(.*)?/(rebuild\.php)
 RewriteCond %{REQUEST_URI} !core
 RewriteRule ^ %1/core/%2 [L,QSA,R=301]

 # 在安装期间重写install.php以查看mod_rewrite是否正常工作
 RewriteRule ^core/install\.php core/install.php?rewrite=ok [QSA,L]

 # 将不直接引用文件系统中的文件的所有请求传递给index.php。
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_URI} !=/favicon.ico
 RewriteRule ^ index.php [L]

 # 出于安全原因,拒绝访问公共网站上的其他PHP文件。
 # 注意:以下URI条件未锚定在开头(^),因为Drupal可能位于子目录中。为了进一步提高安全性,可以将'!/'替换为'!^/'。
 # 允许访问 /core 中的PHP文件(如authorize.php或install.php):
 RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$
 # 允许访问测试特定的PHP文件:
 RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?\.php
 # 允许访问Statistics模块的自定义前端控制器。
 # 复制并调整此规则以直接执行贡献或自定义模块中的PHP文件,或在同一目录中运行另一个PHP应用程序。
 RewriteCond %{REQUEST_URI} !/core/modules/statistics/statistics\.php$
 # 禁止访问不符合上述规则的任何其他PHP文件。
 # 特别是不允许直接提供autoload.php。
 RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F]

 # 正确提供gzip压缩的CSS和JS文件。
 # 需要启用mod_rewrite和mod_headers。
 <IfModule mod_headers.c>
   # 如果存在并且客户端接受gzip压缩,提供gzip压缩的CSS文件。
   RewriteCond %{HTTP:Accept-encoding} gzip
   RewriteCond %{REQUEST_FILENAME}\.gz -s
   RewriteRule ^(.*css_[a-zA-Z0-9-_]+)\.css$ $1\.css\.gz [QSA]

   # 如果存在并且客户端接受gzip压缩,提供gzip压缩的JS文件。
   RewriteCond %{HTTP:Accept-encoding} gzip
   RewriteCond %{REQUEST_FILENAME}\.gz -s
   RewriteRule ^(.*js_[a-zA-Z0-9-_]+)\.js$ $1\.js\.gz [QSA]

   # 提供正确的内容类型,并防止双重压缩。
   RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=no-brotli:1]
   RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1,E=no-brotli:1]

   <FilesMatch "(\.js\.gz|\.css\.gz)$">
     # 提供正确的编码类型。
     Header set Content-Encoding gzip
     # 强制代理缓存gzip和非gzip的css/js文件分开。
     Header append Vary Accept-Encoding
   </FilesMatch>
 </IfModule>
</IfModule>

# 各种头部修复。
<IfModule mod_headers.c>
 # 禁用内容嗅探,因为它是一个攻击向量。
 Header always set X-Content-Type-Options nosniff
 # 禁用Proxy头,因为它是一个攻击向量。
 RequestHeader unset Proxy
</IfModule>
解释
保护文件和目录:保护特定文件类型不被访问。
不显示目录列表:防止显示目录内容。
默认处理程序:设置默认的索引文件。
SVGZ编码:为SVGZ文件设置正确的MIME类型和编码。
PHP设置:配置PHP设置,确保安全。
缓存控制:设置缓存策略。
回退资源:如果未启用mod_rewrite,设置回退资源。
重写规则:各种重写规则,包括隐藏目录、规范化URL、gzip压缩文件处理等。
头部修复:设置安全相关的HTTP头。
这些设置有助于增强Drupal网站的安全性和性能。

标签

  • Drupal
  • 登录或注册以发表评论

评论

相关文章

Drupal Composer命令及作用总结
drupal 中的解耦菜单
drupal启用大文件上传解决方案
如何从基于 Drupal 的 CMS URL Linux 门户中删除 index.php
drupal 基本的目录结构
drupal index.php 的工作流程
在 Drupal 8 中从 URL 中删除 index.php
drupal Index.php 的永久解决方法
Drupal 机读名称的命名规范
如何使用Drupal构建网站

文章标签

CSS
Excel
ubuntu
php
五笔
vim
Linux
HTML
command
drupal 7
composer
centos
Mysql
drupal 8
模块(module)
VPN
drush
JavaSrcipt
apache
drupal 9
英语
Drupal
SEO
nerdtree
network
果树种植
surround
drupal10
主题(theme)
phpmyadmin
ssh
权限
yum
二进制
声音
ssl
selinux
HTML5
用户
Dreamweaver
password
flameshot
颜色
翻译
uploadprogress
DDEV
视图(views)
firewalld
kernel
gzip
快捷键
xdebug
错误
ckeditor
mbstring
C语言
简介
源地址
php扩展
电脑基础
certbot
git
apt
压缩解压
表单
电子秤
WireGuard
httpd
邮件验证
breadcrumb
AI
superfish
diff
重定向
网站备份
摄影
tagclouds
docker
java
csharp
短信验证
adsense
drupal9
电脑技巧
simple_adsense
算法
RSS
youtube
版本号
JavaScript
badblocks
端口
cookie
VUE
网站运营
计算机基础
gimp
form
mod_expires 模块
zip
nginx
http验证
重定向,301
curl
netstat
input
赚钱
ip
dns
RFID
标签优化
drupal11
maven
drupal 11
npm
哈希值
字段
更多
RSS源
本站由阿里云强力驱动,幸运券优惠链接
Copyright © 2019 - 2021 你行网 版权所有  粤ICP备19072650号