Apache 伪静态配置 去掉url中的?号和=号
问题描述:
目前的url是:https://xx-aa.c.dd.com/cn/support/how-to/detail-use-skills/?resourceId=zh-cn00457011
希望通过伪静态配置为:https://xx-aa.c.dd.com/cn/support/how-to/detail-use-skills/resourceId/zh-cn00457011能访问上面的url。
或则去掉?resourceId=,用https://xx-aa.c.dd.com/cn/support/how-to/detail-use-skills/zh-cn00457011访问也可以
请问Apache怎么配置?
答
0、httpd 2.4
1、编辑httpd.conf,确认打开了mod_rewrite 模块
2、配置规则
<Location "/cn/support/how-to/detail-use-skills/">
RewriteEngine On
RewriteBase "/cn/support/how-to/detail-use-skills/"
RewriteRule "^.*/(resourceId)/(.*)$" "?$1=$2" [L]
</Location>
3、访问地址,http://192.168.100.128/cn/support/how-to/detail-use-skills/resourceId/zh-cn00457011
172.17.0.1 - - [06/May/2019:10:49:05 +0000] "GET /cn/support/how-to/detail-use-skills/?resourceId=zh-cn00457011 HTTP/1.1" 404 234
192.168.100.1 - - [06/May/2019:10:49:05 +0000] "GET /cn/support/how-to/detail-use-skills/resourceId/zh-cn00457011 HTTP/1.1" 404 234
实际上没有相关的资源所以都是404,但地址是被改写了的
答
1.加载Rewrite模块
2.虚拟主机段添加如下
RewriteEngine On
RewriteRule ^/(.+)/detail-use-skills/(.+)$ /$1/detail-use-skills/?resourceId=$2 [L]