建议阅读: 5个窍门,以提高你的Apache Web服务器的性能
注 :下面的例子假设你至少有点熟悉 Perl兼容正则表达式 (PCRE)。 由于该主题已经超出了本文的范围,请参阅 Perl 5的版本24.0文档有关PCRE的更多细节。 在继续之前,请确保加载了重写模块。虽然这是在 CentOS和类似的版本中,默认行为在 Debian和衍生版本则需要按如下方式手动加载它:# a2enmod rewrite
配置Apache使用mod_rewrite模块
为简单起见,我们使用默认的站点在 CentOS 7 box (IP 192.168.0.100)解释如何使用 mod_rewrite(DocumentRoot的 : 在/ var / www / html等 ,配置文件 :/etc/httpd/conf/httpd.conf中 )。 为了使Apache使用此模块,请将以下行添加到配置文件:RewriteEngine on要注意,此配置将不会被继承这一点很重要 虚拟主机在同一框。 因此,你需要上添加 RewriteEngine叙述在您想使用重写规则,每个虚拟主机。
内部重定向:将URL映射到同一虚拟主机中的另一个
内部重定向 mod_rewrite的最简单的例子。 如果你想重定向到 Default.aspx的 index.html的所有请求,根据 RewriteEngine叙述添加以下行(也称为重写规则)上:RewriteRule "^/default\.aspx$" "/index.html"并且不要忘记重新启动Apache,以使更改生效。 这也许派上用场,如果你的网站是使用 ASP最初的设计,后来更改为纯 HTML5。 搜索引擎将具有
.aspx
索引文件,但文件不存在了。 在这种情况下,您需要找到一种重定向请求的方法,以便您的潜在访问者不会遇到错误页面。为了测试,让我们创建一个名为简单的HTML文件
index.html
里
的/var/www/html等 ,其内容如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>New site</title> </head> <body> <h2>Default.aspx was here, but now it's index.html</h2> </body> </html>插入符号和 美元符号将导致正则表达式匹配任何字符串开头
/default
和结尾
.aspx
分别。
建议阅读: 安装的mod_pagespeed以加快Apache的性能高达10倍
现在,启动浏览器并指出它 192.168.0.100/default.aspx~~V。 如果一切如预期,Apache应该服务index.html
来代替。 但是,最终用户将仍然可以看到
default.aspx
在地址栏导致变化是完全透明的:
将URL映射到域上的其他页面
index.html
,而不是一个名为页面
default.aspx
,添加
[R,L]
按如下方式重写规则的结尾:
RewriteRule "^/default\.aspx$" "/index.html" [R,L]这里
[R,L]
是指示,一个完整的HTTP重定向应该发出到浏览器两个可选标记
(R)
并且没有进一步的规则应进行处理:
将URL映射到实际索引页
index.html
,符合市场预期,而不是
default.aspx
,因为它以前所做的那样。