0

嗨,我需要一些有关 mod_rewrite 的帮助。

我想更改这种网址

127.0.0.1/app/controller/<anyName1>/<anyName2>.php?firstParam=1&secondParam=text&...&nParam=nSomething

127.0.0.1/anyName1/anyName2/1/text/.../nSomething

你能给我举个例子吗?

4

1 回答 1

0

通过不尝试修改任何超出/<anyName1>/<anyName2>/. mod_rewrite将路径组件动态映射到查询变量需要一些非常时髦的递归巫术魔法。

而是仅抓取/<anyName1>/<anyName2>/,将路径的其余部分附加到重定向,然后使用 PHP 解析路径:

.htaccess

RewriteCond %{REQUEST_URI} !^/app/controller/[^/]+/[^/]+\.php
RewriteRule ^([^/]+)/([^/]+)/?(.*)$ /app/controller/$1/$2.php/$3 [L]

PHP

$components = array_filter(explode('/', $_SERVER['PATH_INFO']), 'strlen');

echo '<pre>';
print_r($components);
echo '</pre>';

输出:

Array
(
    [1] => 1
    [2] => text
    [3] => ...
    [4] => nSomething
)
于 2013-08-16T21:37:26.573 回答