跳转到主要内容
你行网

Main navigation

  • 首页
  • Drupal
  • 编程与开发
  • 数据库
  • 操作系统与应用
  • 服务器与运维
  • 社区
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 cms

文章标签

  • Drupal

评论

文章标签

Excel
CSS
ubuntu
php
vim
五笔
VPN
Linux
command
drupal 8
HTML
drupal 7
centos
composer
Mysql
模块(module)
drush
Drupal
JavaSrcipt
apache
英语
drupal 9
nerdtree
荔壳风
network
果树种植
surround
drupal10
SEO
主题(theme)
更多

相关文章

  • 因权限问题导致drupal cms 无法正常安装,那么该如何解决这个问题
  • kvm虚拟机启动失败:default网络未激活
  • ubuntu 安装kvm 虚拟机
  • foreach 是 PHP 循环语句使用方法
  • implode() 函数的定义和用法
  • Drupal 11 主题制作教程
  • 检查 Composer 是否为官方源
  • 在 Drupal 中权重(Weight)是怎样排序的
  • 解决 Drupal 主题缺失问题
  • 为什么学习php 会一边学,一边忘
RSS源

友情链接 网站地图 版权信息 联系我们 网址导航 社区

Copyright © 2019 - 2021 你行网 版权所有  粤ICP备19072650号