Apache mod_rewrite和PHP GET Arrays

mik*_*ike 4 php arrays mod-rewrite get

我想要一个像http:// localhost/folder1/folder2/folder3/file 这样的网址然后我希望mod_rewrite将它转换为$ _GET ['d'],它看起来像d [] = folder1&d [] =文件夹2&d [] = folder3

这可能吗?

谢谢.

Gum*_*mbo 6

对的,这是可能的:

RewriteRule ^(([^/]+/)*)([^/]+)/([^/]+)$ /$1$4?d[]=$3 [QSA,N]
RewriteRule ^([^/]+)$ - [L]
Run Code Online (Sandbox Code Playgroud)

但mod_rewrite并不适合这种工作.实际上,您可以使用N标志快速创建无限循环.

您应该使用PHP来提取其段所请求的URL路径:

$path = strtok($_SERVER['REQUEST_URI'], '?');
$segments = implode('/', ltrim($path, '/'));
Run Code Online (Sandbox Code Playgroud)

然后使用此单个规则重写对您的文件的请求:

RewriteRule ^([^/]+/)+([^/]+)$ $2 [L]
Run Code Online (Sandbox Code Playgroud)