如果目录或文件存在,优先调用现有目录或文件。
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}% {REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}% {REQUEST_FILENAME} !-f
RerwriteRule ^/detail/([0-9]*).html$ /detail.php?id=$1
动态页面是根据用户的请求,从服务器数据库获取相应的数据,返回至页面
静态页面是 纯html+css页面,访问不会访问数据库。
伪静态,顾名思义,假的静态,实为动态,只是把的动态的pathinfo转换成访问静态文件的格式,再通过自己内部设定相应的正则表达式匹配到符合的假理由,将其转换成自己设定好的真正的接口路由,
方法有 在单文件中设置,匹配到就转动态
还有在服务器中设置,appach和ngix差不多,都是vhost中,虚拟域名设定的地方,开启重写拓展后,通过设定正则规则自动完成伪静态,还可以设置,有文件匹配就匹配文件或者 优先匹配伪静态的路由。
没什么难的,理解下原理就行,真正用到的,框架里应该都有此功能吧
apache下rewrite配置
虚拟域名配置
1)找到httpd.conf 查找LoadModule rewrite_module modules/mod_rewrite.so 将其开启。通过php内置函数phpinfo()查看apache是否开启了此模块。查找mod_rewrite 若存在则代表开启。
2)找到Include conf/extra/httpd-vhosts.conf并将其开启。
3)配置httpd-vhosts.conf文件:
<VirtualHost 127.0.0.19:8080>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "e:/sing/state"
ServerName state.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
#RewriteEngine on
#RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}!-d
#RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}!-f
#RewriteRule ^/detail/([0-9]*).html$/detail.php?id=$1
</Virtualhost>
httpd_vhosts.conf配置文件配置相关信息
其中rewritecond中的document_root表示网站域名 request_filename表示url中域名后的请求内容。!-d表示目录 !-f表示文件。这两个rewritecond的意思是,当访问网站时,若遇到url中存在对应目录对应文件时,则直接访问对应的目录文件,而不需遵守rewriterule中的匹配规则。
而rewriterule则代表,当访问网站url时,会将url按照这条写好的规则进行匹配,若匹配成功,则访问规则中定义的文件。
配置windows中的drivers里的hosts文件,将127.0.0.19 state.com写入文件中。
apache伪静态url地址rewrite方式配置完成。
apache伪静态配置示例