计划实现用户访问网站url里面,如果带有不带有portal字符,都看到同样的内容。用户的浏览器不用跳转。
采用重定向实现的话,就比较简单,如果不重定向的话,就比较麻烦,查找了很多资料,阅读了官方文档,最后找到了,使用代理的方式,不过这里是自己代理自己。
RewriteCond %{REQUEST_URI} ^(.*)?/(portal)/(node)/(.*)
RewriteRule ^ "http://localhost/xqipu/node/%4" [P]
需要在httpd.conf文件中启用 :
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
否则会报错:
[Mon Apr 30 17:46:15.522415 2018] [proxy:warn] [pid 7076:tid 2008] [client ::1:62943] AH01144: No protocol handler was valid for the URL /xqipu/portal/node/1 (scheme 'http'). If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
httpd.conf文件中不能使用 //注释,否则会报错:
D:/xampp/htdocs/xqipu/.htaccess: Invalid command '//RewriteRule', perhaps misspelled or defined by a module not included in the server configuration
RewriteCond,RewriteRule 使用正则表达式匹配,括号()里面的匹配项,后台会生成一个引用ID,从1,2,3。
RewriteCond里面使用%1,%2,%3....引用匹配项。
RewriteRule里面使用$1,$2,$3....引用匹配项。