Apache重写规则示例
强制HTTPS跳转:通过RewriteCond判断非HTTPS请求并使用R=301永久重定向至HTTPS;2. 去掉文件扩展名:利用!-f和!-d条件将如/about重写为/about.php;3. 强制带www或不带www:通过HTTP_HOST匹配并301跳转以统一域名格式;4. 自定义伪静态URL:将/article/123/title解析为/article.php?id=123;5. 防止图片盗链:检查Referer头,非本站来源则返回提示图或403;6. 多条件组合重定向:通过HTTP_USER_AGENT匹配恶意爬虫并跳转至封锁页;7. 简单URL重定向:将旧页面301跳转到新页面以保持SEO权重;8. 开启漂亮URL:将所有非文件非目录请求指向index.php以支持前端控制器模式;所有规则需在RewriteEngine On开启后生效,建议逐条测试并备份配置以防止错误导致服务不可用。
Apache RewriteRule 是 Apache 的 mod_rewrite 模块提供的强大功能,用于重写 URL 请求。它常用于实现 SEO 友好链接、网站跳转、防止盗链、HTTPS 强制跳转等场景。以下是几个常见且实用的 RewriteRule 示例,适用于 .htaccess
文件或 Apache 虚拟主机配置中。

1. 强制 HTTPS 跳转
将所有 HTTP 请求重定向到 HTTPS:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
:判断当前是否为非 HTTPS。R=301
:返回 301 永久重定向。L
:表示这是最后一条规则,后续不再处理。
适用于需要全站启用 HTTPS 的场景。
2. 去掉文件扩展名(如 .html 或 .php)
隐藏 .php
扩展名,例如访问 /about
实际加载 /about.php
:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-zA-Z0-9_-] )$ $1.php [L]
!-f
和!-d
:确保请求的不是真实存在的文件或目录,避免冲突。^([a-zA-Z0-9_-] )$
:匹配不含扩展名的 URL。$1.php
:内部重写到同名.php
文件。
可以将
.php
替换为.html
,适用于静态页面。
3. 强制带 www 或不带 www 的域名
强制带 www:
RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
强制不带 www(更常见):
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
[NC]
:忽略大小写。- 使用 301 跳转有利于 SEO 统一域名权重。
4. 自定义伪静态 URL(如文章 ID 显示为标题)
将 /article/123/my-great-article
重写为 /article.php?id=123
:
RewriteEngine On RewriteRule ^article/([0-9] )/([a-zA-Z0-9_-] )$ /article.php?id=$1 [L]
- 第一个括号捕获文章 ID。
- 第二个括号捕获标题(仅用于 SEO,可忽略)。
- 实际处理仍使用
id
参数。
这种方式让 URL 更友好,同时后端逻辑不变。
5. 防止图片盗链
阻止其他网站直接引用你的图片资源:
RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^https://(www\.)?yourdomain\.com/.*$ [NC] RewriteRule \.(jpg|jpeg|png|gif|webp)$ https://yourdomain.com/nohotlinking.jpg [R,L]
- 检查
Referer
头是否为空(允许直接访问)或来自你的域名。 - 匹配常见图片格式,盗链时返回提示图片。
可替换为返回 403 状态码:
RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]
6. 多条件组合:仅对特定用户代理重定向
例如:阻止某些爬虫或重定向移动端用户:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^BadBot [NC,OR] RewriteCond %{HTTP_USER_AGENT} SpamBot [NC] RewriteRule ^.*$ https://example.com/blocked.html [R,L]
OR
表示“或”关系,下一条条件也满足才触发。- 用于屏蔽恶意爬虫或测试机器人。
7. 简单的 URL 重定向(旧页面 → 新页面)
RewriteRule ^old-page\.html$ /new-page.html [R=301,L]
- 适合网站改版后保持旧链接可用。
- 使用
R=301
告诉搜索引擎已永久迁移。
8. 开启“漂亮 URL”(Pretty URLs)支持(如 PHP 框架常用)
例如 Laravel、Symfony 等框架需要将所有请求指向 index.php
:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [QSA,L]
-
QSA
:保留原始查询参数(如?id=1
)。 - 适用于前端控制器(Front Controller)模式。
小贴士
-
开启 RewriteEngine:所有规则前必须有
RewriteEngine On
。 -
测试顺序:规则按顺序执行,注意
L
标志避免后续干扰。 -
调试技巧:可用
RewriteLog
(旧版)或通过 404 日志curl -I
测试跳转。 -
作用域:
.htaccess
中路径不带前导/
,虚拟主机中可能需要调整。
基本上就这些常见场景。实际使用时建议逐条测试,避免误伤正常请求。RewriteRule 功能强大,但正则写错可能导致整个网站无法访问,修改前最好备份配置。
以上是Apache重写规则示例的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undress AI Tool
免费脱衣服图片

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

安装Certbot及其Apache插件;2.运行Certbot获取证书并配置域名;3.可选配置HTTP到HTTPS的自动重定向;4.设置自动续期并通过dry-run测试;5.验证安装并确保Apache正常重载配置,证书成功部署后将自动管理续期,整个过程完成后即可实现安全的HTTPS访问。

UseEventMPMforhigh-concurrencyworkloads,especiallywithPHP-FPM,orPreforkonlyifrequiredbynon-thread-safemodules.2.EnableKeepAlivewithMaxKeepAliveRequestssetto100andKeepAliveTimeoutbetween2–5secondstobalanceconnectionreuseandresourceusage.3.ConfigureEve

CheckCurrentApacheverSionushttpd-Vorapache2-vandverifyservicStatUsviaStl.2.ondebian/ubuntu,upgradeusingsingsingsudoapdat eandsudoaptinstallapache2,optionallyaddingtheppa:使用ududodnfupdatadadagsud

KeepAliveOn启用持久连接;2.MaxKeepAliveRequests100设置每个连接最大请求数;3.KeepAliveTimeout5设置等待后续请求的超时时间,配置后重启Apache并使用curl或浏览器开发者工具验证KeepAlive是否生效,以优化服务器性能。

要设置自定义404错误页面,需先创建页面文件并在Apache中配置路径。1.创建自定义404页面,如将404.html保存至网站根目录;2.在网站根目录的.htaccess文件中添加ErrorDocument404/404.html,确保AllowOverride已启用;3.若使用VPS或独立服务器,可在虚拟主机配置文件(如000-default.conf)中添加ErrorDocument404/404.html,并重启Apache服务;4.通过访问不存在的URL测试自定义页面是否生效。配置时应

创建网站目录并添加测试页面;2.在/etc/apache2/sites-available/下创建虚拟主机配置文件,设置ServerName、DocumentRoot等;3.使用a2ensite启用站点,禁用默认站点,测试配置后重载Apache;4.本地测试时在/etc/hosts中添加域名指向127.0.0.1;完成以上步骤后,访问example.com即可看到网站内容,虚拟主机配置成功。

Ondebian/ubuntu,themainapacheconfigurationfileis/etc/apache2/apache2.conf,withAdditionalConfigurationsin/etc/apache2/stites-av ailable/and/etc/apache2/conf-abailable/.2.onrhel/centos/fedora,itistyply/etc/etc/httpd/conf/conf/httpd.conf,withextrafilesin/etc/h

First,verifythelibphp.sofileexistsusingfindorlocatecommands;ifmissing,reinstallPHPwithApachesupportviapackagemanager.2.CheckApacheconfigurationfilesforcorrectLoadModuledirectivepathandremoveduplicates.3.EnsureApacheandPHPversionsandarchitecturesmatch
