mod_rewrite拆分/剥离URL



对于特定目的,我需要能够从URL中抓取前2个路径用作用户名/md5sum'ed密码-并让web服务器处理其余部分。

例句:h..ps://192.168.5.6/user/password/-> call/pkg/index.php?u=user&p=passwordh . . ps://192.168.5.6/密码用户//包装/ test.zip -> 应该叫/pkg/包装/dl.php ? u = 用户,p = 密码,f = test.zip

h..ps://192.168.5.6/用户/密码/images/default.png ->应该调用/pkg/images/default.png

/pkg/index.php可能会引用一堆位于/pkg下的其他文件-这些URL不应该被修改。我假设,原始完整的URI可以使用$_SERVER['REQUEST_URI']抓取-我可以从那里抓取任何参数,可能已经在get请求中传递到原始URL (h..ps://192.168.5.6/user/password/?parm1=x&parm2=y)

当然,如果URL上没有给出用户/通行证组合,它将只调用h..ps://192.168.5.6/index.php

谁能告诉我如何在Apache中使用mod_rewrite获得这个?

尝试添加一个名为"的文件。Htaccess "到站点的根目录,并将其添加到文件:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ /pkg/pack/dl.php?u=$1&p=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_.-]+)$ /pkg/pack/dl.php?u=$1&p=$2&f=$3

这将打开mod_rewrite引擎,然后触发静默重写(这不会修改访问者在他们的web浏览器中看到的URL),从/user/pass/模式到你的dl.php脚本的两个参数版本,从/user/pass/file模式到你的dl.php脚本的三个参数版本。

上述模式允许字母、数字、下划线和连字符出现在用户名和密码中,也允许句号出现在文件名中。

修改模式以允许额外或拒绝某些字符。

最新更新