发布时间:2020-04-28 14:35:34来源:阅读:
在Web开发中,通常设置HTTP能在URL不映射文件系统中的文件时访问资源。 虽然可以在某种程度上使用重定向语句来解决这个问题,但是许多部署对于URL重写具有更复杂的需求。 Apache的mod_rewrite提供重写功能,以便用户使用简洁明了的URL进行交互,同时仍然能够为管理员提供他们认为合适的网站目录架构。
在
RewriteEngine on
您可以创建任意数量的重写规则。 这些规则提供了服务器比较入站请求的模式。 如果请求与重写模式匹配,则服务器按照规则所述修改请求,并处理该请求。 下面是一个重写规则的例子:
RewriteRule ^post-id/([0-9]+)$ /posts/$1.html
让我们解析这条规则:首先,请注意,第一个字符串是匹配传入请求的模式。 第二个字符串指定要提供的实际文件。 Mod_rewrite模式使用正则表达式语法:^匹配字符串的开头,$匹配字符串的结尾,这意味着重写引擎不会重写与模式部分匹配的字符串。
上面的例子会重写指定以/post-id/开头的路径的所有URL,并包含一个或多个数字(例如[0-9]+),在/posts/目录中提供相应的.html文件。 模式中的括号术语指定了作为$1,$2,$3等传递给第二个字符串的变量。
您可以创建和应用多个重写规则,但这些规则是顺序匹配的。 表示RewriteRules的顺序可以影响匹配的规则。
或者,您可以插入RewriteBase指令来修改重写规则的行为。 让我们假设:
这些指令是为/srv/www/example.com/public_html/目录指定的。
某些用户以http://example.com/post-id/200形式发送请求,其中200可能是长于一位数的任何数字。
某些用户以http://example.com/page/title-of-page的形式发送请求,其中“title of page”可能代表任何字符串。
这些文件位于/srv/www/example.com/public_html/objects/上,匹配请求文件名称,扩展名为.html。
RewriteEngine on RewriteBase /objects RewriteRule ^post-id/([0-9]+)$ $1.html RewriteRule ^page/([^/]+)$ $1.html
上面的重写规则集作用如下:
http://example.com/post-id/200/,提供位于/srv/www/example.com/public_html/objects/200.html的文件
http://example.com/page/free-the-toast/,提供位于/srv/example.com/public_html/objects/free-the-toast.html的文件
使用RewriteCond参数,您可以限制使用RewriteRule的条件。 让我们从WordPress应用程序的默认重写规则中获取以下示例:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
在此示例中,以上下文的顶层开始的所有请求都受重写规则的影响。 这由RewriteBase /指令指定。 上下文由在虚拟主机,目录块或.htaccess文件中指定伪指令的位置决定。
RewriteCond语句指示Apache仅当满足条件时才应用遵循的规则。 在上述示例中,匹配请求的文件名称在文件系统上不存在(例如,!-f),或者目录不存在(例如!-d)的请求。
简而言之,如果两者都为真,并且文件和目录都不存在,则Web服务器将请求附加到index.php。 也就是说,f用户请求http://example.com/?post=123或http://example.com/post/123,服务器将返回index.php?post=123或index.php/post/123。
最后,有一些代码,你可以附加到一个RewriteRule,修改重写的行为。 在前面的例子RewriteRule ./index.php [L],我们看到代表“最后规则”的[L]选项。 这阻止Apache应用任何其他重写规则。 最常见的附加选项包括:
F告诉客户端该URL被禁止,用HTTP代码403响应。
N强制mod_rewrite重新开始重写过程,并允许多阶段重写。
R告诉客户端所请求的页面已经移动,具有用于临时重定向的HTTP代码302。 要表示该网页已永久移动,请指定“R=301”。
您可以在RewriteRule结尾处指定多个选项,用逗号分隔它们,如:[L,R=301]
服务器安全工具(服务器安全防护软件) 1.2.2.0 免费绿色版
329.2K
BIGEMAP离线地图服务器(离线地图开发者工具) v15.4.0.0 破解版
48.9M
C-Lodop云打印服务器下载
9.3M
Cerberus FTP Server Enterprise(FTP服务器软件) v12.0 免费版
28.7M
HeidiSQL(MySQL服务器数据管理工具) v11.0.0.6055 免费版
10.1M
深蓝群Ping工具 V2.1 绿色版 多服务器多线程群ping工具
487 KB
网络文件服务器(HTTP文件管理系统) 2.3 绿色版
837.6KB
Apache Logs Viewer(Apache日志分析工具) v5.0.0.42
22.98 MB
URL Blocker下载
919KB
modeFRONTIER 2016破解版
4.05 GB
Emby Server(流媒体服务软件,)v4.0.2.0 破解版
101M
tftpd32(网络服务包) V32.452 官方版
0.52MB
word字体(word字体服务软件) 2021 免费版
225MB
华为浏览器(网页浏览服务软件)v6.1.2.1500 最新版
85.7M
考无忧2017职称计算机模块-用友T3财务软件 v17.1
38.95 MB
考无忧2018职称计算机模块-AutoCAD2004 v18.1
51.66 MB
考无忧2018职称计算机模块-Excel2003模块 v18.2
62.3 MB
考无忧2018职称计算机模块-PhotoShop CS v18.1.0
64.3 MB
考无忧2018职称计算机模块-Word 2007模块 v18.2
73.9 MB
雨燕投屏(投屏办公服务软件) 3.10.16.0 最新版
3.5M
2020-06-22
七旬风水大师沉迷手游,20多部手机同步抓怪,每月氪金约10000元
棋牌类游戏如QQ游戏,同城游间歇性断网的解决方案
纯静态化案例实现
安装驱动时出现“需要HD Audio总线驱动程序,但是没有找到“错误的解决方案
在GPT分区表下安装Win10、Win8双系统
联想笔记本G460 BIOS虚拟界面
联想I720手机如何开启和关闭炫彩光效(两侧的LED灯)?
如何安装王码五笔输入法
Windows 7下USB设备无法使用,通用串行总线控制器显示叹号