使PHP GET参数看起来像目录

时间:2010-12-04 03:43:13

标签: url-rewriting

我正努力做到这一点:

http://foo.foo/?parameter=value “转变”为 http://foo.foo/value

感谢。

4 个答案:

答案 0 :(得分:4)

假设你在Apache上运行,.htaccess中的这段代码对我有用:

RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)/$ /index.php?parameter=$1

根据您的网站结构,您可能需要遵守一些规则。

答案 1 :(得分:1)

在Apache服务器上启用mod_rewrite并使用.htaccess规则将请求重定向到控制器文件。

的.htaccess

# Enable rewrites
RewriteEngine On
# The following two lines skip over other HTML/PHP files or resources like CSS, Javascript and image files 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# test.php is our controller file
RewriteRule ^.*$ test.php [L]

test.php的

$args = explode('/', $_SERVER['REDIRECT_URL']);  // REDIRECT_URL is provided by Apache when a URL has been rewritten
array_shift($args);
$data = array();
for ($i = 0; $i < count($args); $i++) {
    $k = $args[$i];
    $v = ++$i < count($args) ? $args[$i] : null;
    $data[$k]= $v;
}
print_r($data);

访问网址http://localhost/abc/123/def/456将输出以下内容:

Array
(
    [abc] => 123
    [def] => 456
)

答案 2 :(得分:0)

假设您使用的是Apache,以下教程非常有用:

  1. .htaccess part one
  2. .htaccess part two
  3. 第二个教程有你的答案。准备深入挖掘一个名为mod_rewrite的地牢。

答案 3 :(得分:0)

如果您使用的是Apache,请使用mod重写规则。这是制作虚拟目录的更好,更安全的方法。