例如:
google.com/en/game/game1.html
应该是
google.com/index.php?p1=en&p2=game&p3=game1.html
如何拆分URL并将index.php发送到“/”的一部分?
答案 0 :(得分:5)
如果查询参数具有固定长度,则只能实现此目的。否则,还有另一种方法,但需要解析应用程序中的路径。
以下规则匹配所有三个URL部分,然后将它们重写为 index.php 的命名查询参数。
RewriteRule ^([^/]+)/([^/]+)/(.+)$ index.php?p1=$1&p2=$2&p3=$3
重写:
/en/game/game1.html
要:
/index.php?p1=en&p2=game&p3=game1.html
# Don't rewrite if file exist. This is to prevent rewriting resources like images, scripts etc
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?path=$0
重写:
/en/game/game1.html
要:
/index.php?path=en/game/game1.html
然后您可以解析应用程序中的路径。
编辑:)为了使重写规则匹配,如果网址的第一级包含两个字符,请执行以下操作:
RewriteRule ^([a-zA-Z]{2})/([^/]+)/(.+)$ index.php?p1=$1&p2=$2&p3=$3
你也可以为未知长度实现这样做:
RewriteRule ^[a-zA-Z]{2}/ index.php?path=$0