这里,原先的URL://www.jb51.net/index.php?id=nnnn,不包含marker,所以被第一个规则永久重定向到//www.jb51.net/nnnn,第二个规则将//www.jb51.net/nnnn反定向到//www.jb51.net/index.php?marker&id=nnnn,并且加了marker以及id=nnnn两个变量,最后mod_rewrite就开始进行处理过程。
第二次匹配,marker被匹配,所以忽略第一条规则,这里有一个“.”字符会出现在//www.jb51.net/index.php?marker&id=nnnn中,所以第二条规则也会被忽略,这样我们就完成了。
注意,这个解决方案要求Apache的一些扩展功能,所以如果你的网站放于在共享主机中会遇到很多障碍。
12.保证安全服务启用
Apache可以用两种方法辨别你是否开启了安全服务,分别引用{HTTPS}和{SERVER_PORT}变量:
RewriteCond %{REQUEST_URI} ^secure_page.php$
RewriteCond %{HTTPS} !on
RewriteRule ^/?(secure_page.php)$ https://www.jb51.net/$1 [R=301,L]
以上规则测试{REQUEST_URI}值是否等于我们的安全页代码,并且{HTTPS}不等于on。如果这两个条件同时满足,请求将被重定向到安全服务URI.另外你可用{SERVER_PORT}做同样的测试,443是常用的安全服务端口
RewriteCond %{REQUEST_URI} ^secure_page.php$
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(secure_page.php)$ https://www.jb51.net/$1 [R=301,L]
13.在特定的页面上强制执行安全服务
遇到同一个服务器根目录下分别有一个安全服务域名和一个非安全服务域名,所以你就需要用RewriteCond 判断安全服务端口是否占用,并且只将以下列表的页面要求为安全服务:
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(page1|page2|page3|page4|page5)$ https://www.jb51.net/%1[R=301,L]
以下是怎样将没有设置成安全服务的页面返回到80端口:
RewriteCond %{ SERVER_PORT } ^443$
RewriteRule !^/?(page6|page7|page8|page9)$//www.jb51.net%{REQUEST_URI} [R=301,L]
其实Rewrite里运用最多的还应该是正则表达式,如果了解点儿正则的话,写起这个规则还是比较简单的。
您可能感兴趣的文章:
Joomla开启SEF的方法Joomla简单判断用户是否登录的方法Joomla实现组件中弹出一个模式(modal)窗口的方法joomla组件开发入门教程joomla数据库操作示例代码joomla jce editor 解决上传中文名文件失败问题xml在joomla表单中的应用详解分享ajax在joomla中的原生态应用代码CKeditor与syntaxhighlight打造joomla代码高亮joomla内置的表单验证功能使用方法Joomla下利用configuration.php存储简单数据了解Joomla 这款来自国外的php网站管理系统linux下apache开启url重写的方法(详细说明)Joomla使用Apache重写模式的方法