Apache 重定向配置方法

Apache URL重定向 Apached的重写功能,即是mod_rewrite模块功能,它是apache的一个模块。它的功能非常强大,可以操作URL中的所有部分。通过改写url,给用户提供一个简介大方的url,当用户访问时可以通过mod_rewrite模块功能转换为真正的资源路径。通过mod_rewrite能实现的功能还有很多,例如隐藏真实地址、实现URL跳转、域名跳转、防盗链、限制访问资源类型等等。URL重写在生产环境中被广大运维大牛们运用的淋漓尽致,那么什么是URL重写呢?URL重写其实就是改写用户浏览器中的URL地址。 阅读详情

 

今天的support内容需要测试Apache 页面重定向,简单的说就是配置Apache让它自动把旧的URL地址转换成新的URL输出。 

  • 首先,apache重定向功能需要调用mod_rewrite模块,由于apache2.2的modules文件夹中带有该模块,所以我们只需开启http.conf文件中的LoadModule rewrite_module modules/mod_rewrite.so(去掉前面的‘#’就可以了)。

 Apache模块 mod_rewrite说明

说明:提供了一个基于规则的实时转向URL请求的引擎
状态:Extension
模块名:rewrite_module
源文件:mod_rewrite.c
兼容性:包含在Apache 1.3及其更新版本中
      

  • 修改http.conf文件,追加以下代码:
#开启Rewrite模块
RewriteEngine on  
#设置Log的输出位置()
RewriteLog 
"F:/local/apache2.2/logs/rewrite.log"
  
#举例:替换page.jsp?id
=
30800为新地址http://localhost/webadmin/index.jsp 
RewriteCond %{QUERY_STRING} ^id
=30800
$       
RewriteRule ^/page.jsp$ http://localhost/webadmin/index.jsp 
[L]

常用指令:

  • RewriteBase

语法:RewriteBase URL-path

RewriteBase指令显式地设置了目录级重写的基准URL。默认值是,RewriteBase physical-directory-path在对一个新的URL进行替换时,此模块必须把这个URL重新注入到服务器处理中。 为此,它必须知道其对应的URL前缀或者说URL基准。通常,此前缀就是对应的文件路径。 但是,大多数网站URL不是直接对应于其物理文件路径的,因而一般不能做这样的假定! 所以在这种情况下,就必须用RewriteBase指令来指定正确的URL前缀。

RewriteEngine On

#  let the server know that we were reached via /xyz and not
#  via the physical path prefix /abc/def
RewriteBase   /xyz

 语法:RewriteCond TestString CondPattern

RewriteCond指令定义了一个规则的条件,即,在一个RewriteRule指令之前有一个或多个RewriteCond指令。 条件之后的重写规则仅在当前URI与pattern匹配并且符合这些条件的时候才会起作用。

TestString是一个纯文本的字符串,但是还可以包含下列可扩展的成分。CondPattern是条件pattern, 即, 一个应用于当前实例TestString的正则表达式, 即, TestString将会被计算然后与CondPattern匹配.

RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*
RewriteRule  ^/$                 /homepage.max.html  
[ L ]

RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
RewriteRule  ^/$                 /homepage.min.html  
[ L ]

RewriteRule  ^/$                 /homepage.std.html  
[ L ]

 

 语法:RewriteEngine on|off

RewriteEngine指令打开或关闭运行时刻的重写引擎。 如果设置为off,则此模块不执行任何运行时刻的重写操作, 甚至也不更新SCRIPT_URx环境变量。使用该指令可以使此模块无效,而无须注释所有的RewriteRule指令!

注意:默认情况下,重写配置是不可继承的, 即,必须在每个需要的虚拟主机中设置一个RewriteEngine on指令。

语法:RewriteLog file-path

RewriteLog指令设置用于记录所有重写操作的文件的名称。 如果此文件名不是以斜杠('/')开头,则它是相对于Server Root的。 此指令应该仅仅出现在服务器级配置中。

如果要关闭对重写操作的记录,不推荐把 Filename设置为 /dev/null, 因为,虽然重写引擎不能输出记录了,但仍会内部地建立这个日志文件, 它会使服务器速度降低,而且对管理员毫无益处! 要关闭日志,可以删除或注解 RewriteLog指令, 或者使用 RewriteLogLevel 0!
RewriteLog  " /usr/local/var/apache/logs/rewrite.log "  

语法:RewriteLogLevel Level

RewriteLogLevel指令设置重写引擎日志的详细程度的级别。 默认级别0意味着不记录,而9或更大的值意味着记录所有的操作。

要关闭重写引擎日志,可以简单地设此值为0,关闭所有的重写操作记录。使用较高的Level值会使Apache服务器速度急剧下降! 重写日志使用大于2的Level值只用于调试!

RewriteLogLevel  3

语法:RewriteRule Pattern Substitution

RewriteRule指令是重写引擎的根本。此指令可以多次使用。 每个指令定义一个简单的重写规则。这些规则的定义顺序尤为重要, 因为,在运行时刻,规则是按这个顺序逐一生效的.

Pattern是一个作用于当前URL的兼容perl的正则表达式. 这里的``当前''是指该规则生效时的URL的值。 它可能与被请求的URL不同,因为其他规则可能在此之前已经发生匹配并对它做了改动。

[flags]

  • 'redirect|R [=code]' (强制重定向 redirect)
    以http://thishost[:thisport]/(使新的URL成为一个URI) 为前缀的Substitution可以强制性执行一个外部重定向。 如果code没有指定,则产生一个HTTP响应代码302(临时性移动)。 如果需要使用在300-400范围内的其他响应代码,只需在此指定这个数值即可, 另外,还可以使用下列符号名称之一: temp (默认的), permanent, seeother. 用它可以把规范化的URL反馈给客户端,如, 重写``/~''为 ``/u/'',或对/u/user加上斜杠,等等。

    注意: 在使用这个标记时,必须确保该替换字段是一个有效的URL! 否则,它会指向一个无效的位置! 并且要记住,此标记本身只是对URL加上 http://thishost[:thisport]/的前缀,重写操作仍然会继续。 通常,你会希望停止重写操作而立即重定向,则还需要使用'L'标记.

  • 'forbidden|F' (强制URL为被禁止的 forbidden)
    强制当前URL为被禁止的,即,立即反馈一个HTTP响应代码403(被禁止的)。 使用这个标记,可以链接若干RewriteConds以有条件地阻塞某些URL。
  • 'gone|G' (强制URL为已废弃的 gone)
    强制当前URL为已废弃的,即,立即反馈一个HTTP响应代码410(已废弃的)。 使用这个标记,可以标明页面已经被废弃而不存在了.
  • 'proxy|P' (强制为代理 proxy)
    此标记使替换成分被内部地强制为代理请求,并立即(即, 重写规则处理立即中断)把处理移交给代理模块。 你必须确保此替换串是一个有效的(比如常见的以 http://hostname开头的)能够为Apache代理模块所处理的URI。 使用这个标记,可以把某些远程成分映射到本地服务器名称空间, 从而增强了ProxyPass指令的功能。

    注意: 要使用这个功能,代理模块必须编译在Apache服务器中。 如果你不能确定,可以检查``httpd -l''的输出中是否有mod_proxy.c。 如果有,则mod_rewrite可以使用这个功能; 如果没有,则必须启用mod_proxy并重新编译``httpd''程序。

  • 'last|L' (最后一个规则 last)
    立即停止重写操作,并不再应用其他重写规则。 它对应于Perl中的last命令或C语言中的break命令。 这个标记可以阻止当前已被重写的URL为其后继的规则所重写。 举例,使用它可以重写根路径的URL('/')为实际存在的URL, 比如, '/e/www/'.
  • 'next|N' (重新执行 next round)
    重新执行重写操作(从第一个规则重新开始). 这时再次进行处理的URL已经不是原始的URL了,而是经最后一个重写规则处理的URL。 它对应于Perl中的next命令或C语言中的continue命令。 此标记可以重新开始重写操作,即, 立即回到循环的头部。
    但是要小心,不要制造死循环!
  • 'chain|C' (与下一个规则相链接 chained)
    此标记使当前规则与下一个(其本身又可以与其后继规则相链接的, 并可以如此反复的)规则相链接。 它产生这样一个效果: 如果一个规则被匹配,通常会继续处理其后继规则, 即,这个标记不起作用;如果规则不能被匹配, 则其后继的链接的规则会被忽略。比如,在执行一个外部重定向时, 对一个目录级规则集,你可能需要删除``.www'' (此处不应该出现``.www''的)。
  • 'type|T=MIME-type' (强制MIME类型 type)
    强制目标文件的MIME类型为MIME-type。 比如,它可以用于模拟mod_alias中的ScriptAlias指令, 以内部地强制被映射目录中的所有文件的MIME类型为``application/x-httpd-cgi''.
  • 'nosubreq|NS' (仅用于不对内部子请求进行处理 no internal sub-request)
    在当前请求是一个内部子请求时,此标记强制重写引擎跳过该重写规则。 比如,在mod_include试图搜索可能的目录默认文件(index.xxx)时, Apache会内部地产生子请求。对子请求,它不一定有用的,而且如果整个规则集都起作用, 它甚至可能会引发错误。所以,可以用这个标记来排除某些规则。

    根据你的需要遵循以下原则: 如果你使用了有CGI脚本的URL前缀,以强制它们由CGI脚本处理, 而对子请求处理的出错率(或者开销)很高,在这种情况下,可以使用这个标记。

  • 'nocase|NC' (忽略大小写 no case)
    它使Pattern忽略大小写,即, 在Pattern与当前URL匹配时,'A-Z' 和'a-z'没有区别。
  • 'qsappend|QSA' (追加请求串 query string append)
    此标记强制重写引擎在已有的替换串中追加一个请求串,而不是简单的替换。 如果需要通过重写规则在请求串中增加信息,就可以使用这个标记。
  • 'noescape|NE' (在输出中不对URI作转义 no URI escaping)
    此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。 一般情况下,特殊字符(如'%', '$', ';'等)会被转义为等值的十六进制编码。 此标记可以阻止这样的转义,以允许百分号等符号出现在输出中,如:

    RewriteRule /foo/(.*) /bar?arg=P1/%3d$1 [R,NE]

    可以使'/foo/zed'转向到一个安全的请求'/bar?arg=P1=zed'.
  • 'passthrough|PT' (移交给下一个处理器 pass through)
    此标记强制重写引擎将内部结构request_rec中的uri字段设置为 filename字段的值,它只是一个小修改,使之能对来自其他URI到文件名翻译器的 Alias,ScriptAlias, Redirect 等指令的输出进行后续处理。举一个能说明其含义的例子: 如果要通过mod_rewrite的重写引擎重写/abc为/def, 然后通过mod_alias使/def转变为/ghi,可以这样:

    RewriteRule ^/abc(.*) /def$1 [PT]
    Alias /def /ghi

    如果省略了PT标记,虽然mod_rewrite运作正常, 即, 作为一个使用API的URI到文件名翻译器, 它可以重写uri=/abc/...为filename=/def/..., 但是,后续的mod_alias在试图作URI到文件名的翻译时,则会失效。

    注意: 如果需要混合使用不同的包含URI到文件名翻译器的模块时, 就必须使用这个标记。。 混合使用mod_alias和mod_rewrite就是个典型的例子。

    For Apache hackers

    如果当前Apache API除了URI到文件名hook之外,还有一个文件名到文件名的hook, 就不需要这个标记了! 但是,如果没有这样一个hook,则此标记是唯一的解决方案。 Apache Group讨论过这个问题,并在Apache 2.0 版本中会增加这样一个hook。
  • 'skip|S=num' (跳过后继的规则 skip)
    此标记强制重写引擎跳过当前匹配规则后继的num个规则。 它可以实现一个伪if-then-else的构造: 最后一个规则是then从句,而被跳过的skip=N个规则是else从句. (它和'chain|C'标记是不同的!)
  • 'env|E=VAR:VAL' (设置环境变量 environment variable)
    此标记使环境变量VAR的值为VAL, VAL可以包含可扩展的反向引用的正则表达式$N和%N。 此标记可以多次使用以设置多个变量。 这些变量可以在其后许多情况下被间接引用,但通常是在XSSI (via <!--#echo var="VAR"-->) or CGI (如 $ENV{'VAR'})中, 也可以在后继的RewriteCond指令的pattern中通过%{ENV:VAR}作引用。 使用它可以从URL中剥离并记住一些信息。
  • 'cookie|CO=NAME:VAL:domain[:lifetime[:path]]' (设置cookie)
    它在客户端浏览器上设置一个cookie。 cookie的名称是NAME,其值是VAL。 domain字段是该cookie的域,比如'.apache.org', 可选的lifetime是cookie生命期的分钟数, 可选的path是cookie的路径。
SSL安装配置/Apache 配置 单个项目 http重定向到https 文章目录一、忽略购买环节二、证书申请三、填写申请信息四、证书安装·部署·配置五、Apache 配置 单个项目 http重定向到https SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。 本章讲解 ... 阅读详情

相关推荐

Windows中配置重定向方法

       Windows配置:Apache的 httpd.conf中查找是否有LoadModule rewrite_module modules/mod_rewrite.so 如果被注释掉则去掉注释,如果没有则加上示例修改Apache配置,修改目录权限AllowOverrideAll生产.htaccess文件修改目的是为了学习方便,.htaccess可以直接修改配置,实际生产中还是在Apac...

Grey_coder的博客 3263

Apache重定向

apache的重定向主要是用RewriteCond及RewriteRule来完成,前者用于判断匹配条件,条件符合的将会转到下一条的Rewrite进行处理。 先看一个例子 #打开重写模块 RewriteEngine On #定义重写的基准路径 RewriteBase / #定义判断,若"%{http_host}"=="dmesg.top",则继续执行下面的RewriteRule RewriteCond %{http_host} ^dmesg.top$ [NC] #定义重写规则,将所有访问dmesg

叶落无痕的博客 2772

基线管理之apache安全配置

apache配置文件,确定里面对根目录拒绝所有请求 vim /etc/httpd/conf/httpd.conf 然后找到以下配置,第一行和第四行表明了目录,要想禁止.htaccess文件,就要对其进行覆盖 删除网站的目录浏览权,因为apache会默认开启目录浏览 apache默认没有限制http的方法,我们可以在需要的路径下进行限制,在路径配置中加入 <LimitExcept GET post > Require all denied </LIMitExc...

yyds2022的博客 1536

apache配置RewriteRule重定向

apache配置RewriteRule重定向

m0_46361249的博客 1742

使用Apache进行请求重定向和代理

对于请求代理,可以使用mod_proxy模块和mod_proxy_http模块来实现将请求转发给后端服务器的功能。Apache是一种常用的开源Web服务器软件,它提供了丰富的功能和模块,可以用于实现请求重定向和代理。上述代码将将所有访问"/old-url"的请求重定向到"/new-url"。其中,"[R=301,L]"是重定向标记,"R=301"表示使用301永久重定向,"L"表示停止处理后续规则。请记住,在配置Apache时,要确保已启用相应的模块,并将示例代码添加到适当的虚拟主机或目录配置中。

IsdCoding的博客 590

电池建模 004- Battery (Table-Based)表格化电池模型入门学习

对于 Battery (Table-Based) 模块,提供了多种内置参数。该预参数化数据允许您将模块设置为代表特定供应商的组件。这些电池的参数化可以与制造数据表中的放电曲线相匹配。要加载预定义的参数化,双击 Battery (Table-Based) 模块,点击 Selected part 参数中的 超链接,然后在块参数化管理器窗口中,从可用组件列表中选择所需部件。 (默认)选项用于参数化模块,以代表特定供应商的组件。

qq_63860930的博客 2734

Apache如何配置https以及80重定向443(一文搞懂)

最近公司项目考虑到安全性要使用https,于是领导就把这个任务交给了我,今天就一次性搞懂https如何配置。

爱勇宝 1万+

GD32F470实战:如何用EXMC+SDRAM搞定LVGL大内存需求(附完整代码)

本文详细介绍了如何在GD32F470微控制器上通过EXMC接口驱动外部SDRAM,以满足LVGL图形库的大内存需求。内容涵盖硬件连接、EXMC时序配置、轻量级内存管理器实现,以及将LVGL帧缓冲和资源无缝集成到SDRAM的实战方法,并提供了完整的代码示例和调试技巧,帮助开发者构建稳定可靠的嵌入式GUI系统。

k9l0m1的博客 442

php redirect 配置,Linux系统Apache301重定向配置方法详解

本文主要和大家分享ECSLinux服务器上的 Apahce 如何配置 301 重定向,希望能帮助到大家。问题分析一般是通过修改 Apache 的站点配置文件来实现。解决方案例如,要把域名 test.com,重定向到 www.test.com,则需要修改 Apache 中站点的配置文件,添加 301 重定向的配置。最主要就是以下配置:ServerNametest.com#绑定的...

weixin_29469949的博客 151

基于STM32的室内环境监测系统设计与实现

摘要 本文设计了一种基于STM32的室内环境监测系统,通过传感器实时采集温湿度、空气质量、烟雾浓度等数据,并利用Wi-Fi模块上传至云服务器。系统采用STM32F103C8T6作为主控芯片,结合DHT11、MQ系列传感器及BMP280气压传感器实现数据采集,通过ESP8266模块实现远程数据传输。用户可通过手机APP实时查看环境参数,并在数据超标时触发报警。实验表明,系统运行稳定,监测精度高,具有低成本、易扩展等特点,为改善室内环境质量提供了有效解决方案。 关键词:STM32;室内环境监测;传感器;Wi-F

3254968421的博客 221

【原理图PCB专题】Cadence 17.4版本导出excel版本坐标文件

Cadence 17.4版本导出坐标文件往往都是txt格式,并且无标题、导出时间、导出设计工程多名称等信息。那么怎么样才能导出有带这些信息的excel版本并格式好看的坐标文件呢?

一点硬件 2763

apache 和 nginx 301重定向配置方法

apache 和 nginx 301重定向配置方法 http://jianzi0307.blog.163.com/blog/static/20812002010021115746160/apache 和 nginx 301重定向配置方法 ...

127

手把手教你在飞牛 NAS 上部署自有图床,含Python调用接口

📸 想在飞牛 NAS 上部署图床?这篇教程超适合小白!从安装到使用,步骤清晰~

XiaoqiangClub的博客 2344

Linux 系统 Apache 301 重定向配置方法

例如,要把域名 test.com,重定向到www.test.com,则需要修改 Apache 中站点的配置文件,添加 301 重定向的配置。 最主要就是以下配置: 1 ServerName test.com #绑定的域名test.com 2 RedirectMatch permanent ^/(.*) http://www.test.com/$1 ...

weixin_34377919的博客 130

MobileViT替换YOLOv11主干网络:轻量化新思路-(用MobileViT等轻量视觉Transformer降低计算成本)

在计算机视觉领域,目标检测一直是核心任务之一,而YOLO(You Only Look Once)系列算法因其出色的速度-精度平衡成为工业界和学术界的热门选择。随着YOLOv11的推出,模型性能达到了新的高度,但其计算复杂度和参数量也随之增加,这对资源受限的移动设备和嵌入式系统提出了挑战。与此同时,视觉Transformer(ViT)的出现为计算机视觉带来了全新范式,但其庞大的计算需求限制了在移动端的应用。MobileViT作为一种创新的轻量级视觉Transformer架构,巧妙结合了CNN的归纳偏置优势和V

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1646

IoU的进化之路——IoU、GIoU、DIoU、CIoU四种损失函数总结

IoU、GIoU、DIoU、CIoU四种损失函数总结

chase 8129

重定向实现的三种方法

实现方法:一、通过.htaccess文件配置二、Apache的主配置文件&lt;Directory&gt;段(Windows中的httpt.conf或Linux中的apache2.conf文件中配置)三、使用php或者其他脚本语言实现(只能实现外部重定向)一、通过.htaccess实现        cmd中创建.htaccess(因为目录不能创建):进入到网站根目录,输入 echo 1&gt;....

Grey_coder的博客 1万+

PCL基础:getTransformation函数全流程解析与应用实例,一篇文章精通点云变换

在 Eigen 和 PCL 中,getTransformation是一个常用的函数,用于根据输入的平移和旋转信息(如欧拉角或四元数)生成一个仿射变换矩阵(Eigen::Affine3f或 Eigen::Affine3d)。1)在 Eigen 中,可以通过四元数和平移向量构造一个变换矩阵。2)讲解了从四元数转换到欧拉角,或者从欧拉角转换到四元数的方法。

weixin_42896234的博客 1368

云服务器 ECS windows 系统 Apache 301 重定向配置方法

第一步:域名解析第二步:配置APACHE第三步: 绑定域名访问网址 如:abc.com   就会跳到www.abc.com

曹品东 692

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

apache将不带www域名301重定向到带www的域名的配置方法

#强制重定向到wwwRewriteEngine OnRewriteCond %{HTTP_HOST} ^jb51.net/ [NC]RewriteRule ^(.*)$ http://www.jb51.net/$1 [L,R=301]#强制重定向到不带www的顶级域名RewriteEngine OnRewriteCond %{HTTP_HOST} !^jb51.net/$ [NC]RewriteR...

weixin_30480075的博客 229

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

301重定向配置

301 重定向是永久性重定向,通常用于将一个 URL 永久地转到另一个 URL。这通常在网站更改 URL 结构或者网站迁移时使用,以确保访问旧 URL 的用户被正确地重定向到新页面,并且搜索引擎也会更新索引。根据你使用的 Web 服务器,301 重定向的配置方法不同。

p_s_p的博客 1144

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

301重定向将不带www的域名重定向到带www的域名

Apache配置方法,不是的出门右转。 1.开启Apache虚拟主机配置。(这一步不能实现的去百度,测试好了再执行第二部) 在httpd.conf中,启用虚拟主机配置: 将Include conf/extra/httpd-vhosts.conf 前面的#去掉 2.配置虚拟主机 在apache更目录下的conf\extra目录中,找到虚拟主机配置文件httpd-vhosts.conf ...

wwz123124的博客 969
上一篇: 10种职场经典寓言 绝对让你震撼
下一篇: 学习Jetty AJAX Chat实例
yehell
博客等级 码龄20年 27粉丝 74原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值