Drupal .htaccess rewrite 规则分析

Drupal 默认通过 apache 的 mod_rewrite 来实现 Clean URLs 功能,大家可以打开根目录下 .htaccess 看到关于 mod_rewrite 的规则,下面我们来分析一下 Drupal 的 rewrite 规则:

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on

  # If your site can be accessed both with and without the 'www.' prefix, you
  # can use one of the following settings to redirect users to your preferred
  # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
  #
  # To redirect all users to access the site WITH the 'www.' prefix,
  # (http://example.com/... will be redirected to http://www.example.com/...)
  # adapt and uncomment the following:
  # RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
  # RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
  #
  # To redirect all users to access the site WITHOUT the 'www.' prefix,
  # (http://www.example.com/... will be redirected to http://example.com/...)
  # uncomment and adapt the following:
  # RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
  # RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

  # Modify the RewriteBase if you are using Drupal in a subdirectory or in a
  # VirtualDocumentRoot and the rewrite rules are not working properly.
  # For example if your site is at http://example.com/drupal uncomment and
  # modify the following line:
  # RewriteBase /drupal
  #
  # If your site is running in a VirtualDocumentRoot at http://example.com/,
  # uncomment the following line:
  # RewriteBase /

  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

RewriteEngine on 后面的三段,是当站点同时绑定了泛域名 (如 example.com) 和 www. (如 www.example.com) 的时候用的,作用是让它们跳转到同一个域名上,[NC] 是说明判断是否匹配域名 (%{HTTP_HOST}) 时忽略大小写,[L,R=301] 说明是最后的一条 rewrite 规则,并且以 301 响应来强制重定向。

接下来两段是表明 rewrite 的目录,如果 Drupal 放在别名的子目录里面,可以通过设定 RewriteBase 来让 apache 正确 rewrite (很多时候我们并不需要这样做)。

最后一段是正式 (无 # 注释掉) 的 rewrite 规则,!-f 判断文件不存在,!-d 判断目录不存在,!=/favicon.ico 判断访问路径不是 favicon.ico (这里避免了当 favicon.ico 确实不存在于文件系统中而导致的跳转,通常这不是我们想要的),过滤后的 URI 都会通过 rewrite 变成 index.php?q=xxx 这样的形式,[L,QSA] 说明是最后一条 rewrite 规则,QSA 说明在后面追加原有的 GET 串。

下面是 Zend Framework 的 .htaccess 设置:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

这个是官方文档里提出的 .htaccess 的写法,我已经有几乎一年没有用 ZF 了,记得当年 1.3 版本时的写法很简单的,显然现在进步了不少,是从文件系统上判断,而不是仅仅的正则匹配了。先判断是非空文件 (-s) 或者是一个有效的连接 (-l) 或者是一个目录 (-d) 就执行第一个跳转,这里用了 - 和 [L] 来指明符合上面的都不跳转并退出 rewrite,而其他的 URI 也就会全部 rewrite 到 index.php 了。

然后是 CodeIgniter 的 .htaccess 设置:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

CI 只是简单的判断了 URI 是否不以表达式里面的字符串开头,如果符合则 rewrite 题到 index.php,就如当年的 ZF。

最后看看 CakePHP 的:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L] 
   RewriteRule    (.*) app/webroot/$1 [L] 
</IfModule>

Cake 就更低低了,只是 rewrite 到 webroot 目录的对应文件~~~

估计现在大家对众多框架的 rewrite 规则都有了解,ZF 的改进也已经明确的告诉我们怎样做了 :)

CentOS 6上安全部署Drupal 7的完整实践指南 Drupal 是广泛使用的开源内容管理系统,其架构依赖 LAMP(Linux-Apache-MySQL-PHP)技术栈;在老旧但仍在服役的 CentOS 6 环境中,因系统生命周期终止、PHP 5.3.3 版本限制及安全更新缺失,仅 Drupal 7.x(如 7.96)可兼容运行。理解其运行原理需明确:PHP 扩展需按需编译加载,MySQL 权限须遵循最小化原则,Apache 必须启用 .htaccess 并禁用目录浏览以保障 Web 层安全。该方案的技术价值在于‘遗产系统可控延续’——不追求新特性,而聚焦 阅读详情

相关推荐

Drupal 7在CentOS 6虚拟服务器上的兼容部署与故障排查

Drupal 是一款成熟开源内容管理系统,其 7.x 系列是唯一官方支持 CentOS 6 的主版本;CentOS 6 虽已停止维护,但在政企、医疗、教育等内网环境中仍广泛运行于虚拟服务器之上,构成典型的 LAMP(Apache 2.2 + PHP 5.3–5.6 + MySQL 5.1)遗留栈。该环境的核心挑战在于组件兼容性、SELinux 策略约束与安全加固要求之间的张力——例如 PHP 扩展缺失、mod_rewrite 配置失效、MySQL socket 路径被重定向等问题,均非标准文档可覆盖。本文聚

weixin_33834910的博客 337

Drupal简洁链接的配置方法

网站开通一年了,希望能提高一下现在的访问量,网上看到SEO的方法很多,有一种办法就是Apache Rewrite。看了看Drupal手册里面有关于简洁链接的配置,需要先将Apache的Rewrite配置好才能设置Drupal的简洁链接的配置,这一点还是很人性的。 关于Apache Rewrite的配置,Drupal的安装包里有一个.htaccess文件,这个文件里面有很详细的说明。或者直接在你的配...

Cobra 436

Debian 10 Apache mod_rewrite 实战指南:URL重写、301跳转与伪静态配置

URL重写是Web服务器处理请求路径的核心机制,其原理在于HTTP请求进入Apache后、文件系统映射前,通过正则匹配与条件判断动态修改REQUEST_URI,从而实现路由控制、SEO优化和用户体验提升。该技术具有显著的工程价值:既可卸载应用层解析逻辑(如WordPress永久链接),又能统一安全策略(如强制HTTPS、WWW标准化)。典型应用场景包括网站迁移时的301重定向、CMS伪静态化、移动设备分流及CDN协同调度。在Debian 10这一长期支持的生产环境上,需特别关注a2enmod模块启用流程、A

weixin_34060741的博客 454

Drupal系统.htaccess文件的设置 (转)

对很多站长而言,做301重定向是一个非常麻烦的事,尤其是对广大使用虚拟主机的个人站长。而我们选用的Drupal系统则在这个方面领先了所有的CMS系统,只需要对.htaccess文件进行修改,就可以做好301重定向了。什么是301重定向? 为什么要做301重定向呢?原因很简单,如果你做了正常的域名解析,一般会将带www的域名和不带www的域名都指向首页,搜索引擎的蜘蛛或机器...

test 495

.htaccess 原理与实战:Apache 运行时策略配置详解

.htaccess 是 Apache 提供的目录级运行时配置机制,不同于静态主配置文件,它在每次 HTTP 请求的 Translate 阶段动态加载并生效,本质是基于 AllowOverride 权限控制的策略注入点。其核心价值在于无需重启服务即可实现 URL 重写、访问控制、缓存策略和错误处理,广泛应用于 WordPress 伪静态、共享主机安全加固及 SEO 友好路由等场景。但因执行时机特殊、模块依赖强(如 mod_rewrite、mod_authz_core)、且易受目录遍历与重定向循环影响,需深入理

weixin_34095889的博客 431

mac 下 drupal .htaccess配置文件

mac电脑在xampp环境下搭建drupal使用的.htaccess配置文件,下载后将文件名改为.htaccess放在网站根目录即可。 如果网站不在根目录则放在对应级别的目录下 并修改htaccess文件119行和123行,将119行RewriteBase /drupal前面的#去除,修改drupal为你自己的目录。将123行 RewriteBase /前加上#。 如果还是访问不了则编辑httpd.conf文件,去除LoadModule rewrite_module libexec/apache2/mod_rewrite.so前面的#;并将AllowOverride None改为All

MPC8560 SCC透明模式实战:配置、同步与疑难解析

串行通信控制器(SCC)是嵌入式系统中实现芯片间或板间数据通信的核心硬件模块。其工作原理是将内存中的并行数据通过串并转换器变为串行比特流进行发送,反之亦然,从而在物理层实现高效的数据搬运。这种底层数据操控能力对于构建定制化、高效率的通信链路具有重要价值,尤其在需要实现非标准协议或进行原始数据无损透传的场景中。MPC8560 PowerQUICC III处理器中的SCC支持多种工作模式,其中透明模式因其不解析、不修改数据内容的特点,成为实现协议自主和数据完整性的关键技术。通过合理配置缓冲区描述符(BD)和同步

weixin_33851429的博客 431

apache开启.htaccess及.htaccess的使用方法

今天本地调试PHP程序,用到了.htaccess,而默认配置里面开启.htaccess,在网上找到了开启.htaccess的可行方法,供朋友们借鉴。

Ubuntu 14.04 + Apache 部署 Drupal 7 的底层原理与生产级配置

LAMP 架构是 Web 应用运行的基础范式,其核心在于 Linux、Apache、MySQL 和 PHP 四组件的协同机制。Apache 作为模块化 Web 服务器,通过 mod_rewrite 等扩展实现动态请求路由;PHP 以 SAPI 方式嵌入 Apache 进程,承担逻辑执行;MySQL 提供持久化存储,其 SQL 模式与字符集直接影响应用兼容性。这套组合虽在现代云环境中看似‘过时’,却因稳定性高、文档完备、故障可溯,仍是政企遗留系统、教育平台及国产化适配场景的事实标准。本文聚焦 Drupal 7

weixin_30627341的博客 424

Unity工业数据可视化:基于ModbusTCP的实时数据通信实战

本文详细介绍了在Unity中实现工业数据可视化的核心方法,重点讲解了基于ModbusTCP协议与PLC等工业设备进行实时数据通信的实战流程。内容涵盖NModbus库的集成、Modbus Slave模拟器的使用、TCP连接的建立与多线程安全通信、数据读写与解析,以及如何将实时数据驱动3D场景,为构建工业数字孪生与监控系统提供完整解决方案。

ol7890123的博客 554

华为2019秋招笔试Java实现(2)

华为2019秋招笔试Java实现(2) 笔试日期2019年8月14日 第二题(200分) 题目描述 某程序员小A,有一种表格数据需要存储在文件中。表格中的每一行,由若干个字段组成,每个字段可以是整数或字符串(字符串只包含数字、字母以及特殊字符!@#%^&*()",)。小A设计了一种存储格式,采用文本的方式对表格数据进行存储。文本文件中的每一行,代表了表格数据中的一行数据。具体格式描述如下: 1、采用逗号分隔不同的字段(逗号前后无空格); 2、数字直接采用10进制的文本存储; 3、字符串的存储规则如下

hewhys的博客 1549

Debian 10 Apache mod_rewrite 配置实战:绕过.htaccess直控URL路由

URL重写是Web服务器核心能力之一,本质是在请求处理早期对URI进行解析、匹配与转换,支撑SEO优化、前端路由(如Vue Router history模式)、API网关和PHP框架友好路径等关键场景。其底层依赖Apache的mod_rewrite模块,工作于URL-to-filename映射阶段,分为内部重写(透明)与外部重定向(3xx)两类。技术价值在于解耦用户可见路径与后端资源定位,提升可维护性与安全性。在Debian 10等严格发行版中,因默认禁用.htaccess、Require AllowOve

weixin_30735745的博客 458

FRM模型五:Brinson业绩归因

利用Brinson对基金组合业绩进行归因分析。

stonesssssss的博客 3007

使用Lighttpd的rewrite模块支持Drupal/WordPress的Clean URLS

  原来使用Apache2.2,只要开启使用rewrite模块,在Drupal中:管理(admin)-站点设置(settings)-简洁链接 (Clean URLS)里,Drupal会自动检测可以使用简介链接,选择启用(enable),就会使用默认的.htaccess文件来完成简洁链接的功能。  但是,当我把Apache2.2换为Lighttpd1.4.xx后,Drupal无法自动检测是否可以使用

whycrying的专栏 2672

北斗B1频点信号捕获实战:如何应对NH码跳变带来的挑战?

本文深入探讨了北斗B1频点信号捕获中NH码跳变带来的核心挑战。针对NH码以1kHz速率调制导致的相干积分中断和相关峰畸变问题,文章提出并详细解析了一种基于伪码与多普勒频率分离技术的优化捕获方案。该方案通过差分处理消除NH跳变影响,并利用匹配滤波器与FFT分别进行码相位和多普勒频率的快速估计,有效提升了弱信号环境下的捕获灵敏度和稳定性,为北斗接收机设计提供了实用的工程参考。

joy55的博客 535

【yolo】如何在 YOLOv8 中添加负样本以减少误检

在YOLOv8目标检测中,误检(False Positive)是一个常见问题,即模型将非目标区域错误识别为目标。通过引入负样本(Negative Samples),即不包含任何目标框的图像,可以有效减少误检。在YOLOv8中添加负样本的方法是为这些图像提供空的标注文件(.txt),确保每张图像都有对应的标注文件,即使内容为空。可以使用Python脚本自动生成这些空标注文件。使用负样本时需注意数量比例、标注一致性、验证集同步和图像质量。适当加入负样本能显著提升模型鲁棒性,降低误判风险。

songhuangong123的博客 2879

Debian 8 Apache mod_rewrite 完整配置与故障排查指南

URL重写是Web服务架构的基础能力,其核心在于通过Apache的mod_rewrite模块实现请求路径的动态映射与规范化。原理上依赖正则匹配、条件判断(RewriteCond)和规则执行(RewriteRule)三阶段处理链,并受模块加载状态、AllowOverride权限及作用域继承机制共同约束。该技术显著提升SEO友好性、RESTful接口一致性与用户体验,广泛应用于HTTPS强制跳转、PHP参数路径化、静态资源优化等生产场景。在Debian 8系统中,需特别关注Apache 2.4.10默认禁用re

weixin_33798152的博客 438

RK3588多核NPU并行加速yolo优化教程:基于线程池的高性能推理实现

本教程详细介绍了RK3588多核NPU的并行加速优化方法。RK3588搭载三个独立NPU核心,总计算能力达6TOPS,但传统单线程方式无法充分发挥其性能。文章从硬件架构分析入手,详细讲解了三核心独立处理架构和多种工作模式,并通过代码示例展示了线程池技术的实现原理。线程池通过预创建工作线程、任务队列和条件变量等核心组件,避免了频繁创建线程的开销,能显著提升NPU的并行处理效率。教程还提供了性能计算公式和内存带宽优化策略,帮助开发者最大化利用RK3588的硬件算力,实现高性能AI推理。

LXY_LOVE36的博客 1024

php 简洁链接,drupal 简洁链接如何设置

Web 服务器的角色apache下简洁链接的配置:Drupal 运行在一个 web 服务器上,通常是 Apache 上。如果 web 服务器识别 Drupal 的 .htaccess 文件,那么将初始化一些 PHP 设置,并启用简洁链接(Clean URL)。注意 Drupal支持简洁(Clean)URL,也就是像 http://drupalgarden.cn/node/1 的一样的 URL。Dr...

weixin_42403124的博客 360

手把手教你完成YOLOv8 PyQt5和PySide6目标检测界面搭建,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

目标检测是计算机视觉中的重要任务,广泛应用于安防监控、自动驾驶、智能家居等领域。YOLO系列模型由于其高效的检测速度和较高的准确率,成为目标检测任务的首选算法之一。本项目结合 YOLOv8 与 PyQt5,构建了一个图形化界面,便于用户进行目标检测的操作和展示,实现对图片、视频和摄像头的实时目标检测,不仅可以用于大论文的工作量展示,还可以作为毕业设计。支持目标检测、目标分割等模型进来检测

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

【网络基础2】路由器的 “两扇门”:二层接口和三层接口到底有啥不一样?

家里的路由器背后总有几个网线接口,有的标着 “LAN”,有的标着 “WAN”;公司机房的路由器上,接口更是五花八门,有的插着网线,有的连着光纤,旁边还贴着 “GE0/0/1”“Eth-Trunk1” 这样的标签。你可能会想:不就是插网线的地方吗?有啥区别?其实,这些接口分 “二层接口” 和 “三层接口”,它们的作用差得远了 —— 就像你家的门,有的是 “小区内的单元门”(只通小区内部),有的是 “小区的大门”(能通往外面的世界)。接下来,咱们用大白话 + 生活例子,一点点把这两种接口讲透。

jundao1997的专栏 566

Drupal的简洁URL的配置

1.需要Apache服务器支持mod_rewrite.so模块 2.可以直接在Apache的httpd.conf中加入针对Drupal的URL重写规则;也可以修改Drupal根目录下的.htaccess文件,但是要注意需要修改httpd.conf中的AllowOverride选项,使得Apache可以加载web目录下的.htaccess文件。...

kaiserlu的专栏 375

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

开启Drupal rewrite功能

先检查http.conf里是否有以下代码,任意都可 LoadModule rewrite_module modules/mod_rewrite.soAddModule mod_rewrite.c 查看apache是否安装了模块 apachectl -M 如果有,则可以按照下面的操作。在网站下加入以下rewrite规则。 <Directory /var/ww...

weixin_30597269的博客 181

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Apache Drupal URL重写

在 drupal 跟目录下有个 .htaccess 文件, 这个文件中就有URL地址重写的配置信息,配置信息如下: # Various rewrite rules. RewriteEngine on # If your site can be accessed both with and without the 'www.' prefix, you # can use one of the following settings to redirect users to your preferred

蝈蝈俊.net 2339

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Ubuntu 20.04 Apache mod_rewrite 实战:URL重写与重定向原理

URL重写是Web服务器实现SEO友好、RESTful路由和前后端解耦的核心能力。其底层原理依赖Apache的请求处理生命周期与正则匹配机制,在Ubuntu 20.04默认的Apache 2.4环境中,需特别关注AllowOverride权限配置与mod_rewrite模块加载状态。技术价值在于零代码改造即可统一URL形态、保障搜索引擎权重平滑迁移,并支撑WordPress、Laravel等主流框架的permalink功能。典型应用场景包括.html后缀隐藏、旧链接301跳转、子目录路径标准化及查询参数控制

cucanqi9387的博客 417
上一篇: Godaddy 主域名绑定到子目录及管理子域名
下一篇: PHP开源CMS-Drupal做视频站点(第1版)
xinlanzero
博客等级 码龄25年 10粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值