You are here

基于apache rewrite rule 实现带不带路径前缀都能访问,不调转

计划实现用户访问网站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....引用匹配项。


论坛:

Drupal版本: