使用.htaccess将每个正斜杠作为参数

时间:2012-12-03 16:05:37

标签: php apache .htaccess url-rewriting

我有 .htaccess 代码:

Options +FollowSymLinks  
RewriteEngine On  
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  
RewriteRule ^([\w-]+)/*$ ./index.php?page=$1 

这允许在正斜杠后附加一个参数,并在PHP中用作$_GET,如下所示:

URL:

http://www.url.com/home

PHP:

<?php
    echo $_GET['home'];
?>

我的问题是,如何获取每个正斜杠并将该值作为新的$_GET传递给PHP使用?我假设问题是使用正则表达式解决方案,但由于我没有在正则表达式上搞砸我无法理解它。

只是为了澄清一下,我想要这个:

http://www.url.com/param1/param2/param3

翻译为:

$_GET['param1'];
$_GET['param2'];
$_GET['param3'];

等等。

2 个答案:

答案 0 :(得分:3)

这是一个想法:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9-=_.]+)/([a-zA-Z0-9-=_.]+)/([a-zA-Z0-9-=_.]+)/?$   http://www.example.com/index.php?par1=$1&par2=$2&par3=$3 [L]

不能使用(。*)因为包含斜杠。

答案 1 :(得分:2)

请勿在重写模块中执行此操作。

而是对您的脚本进行简单的重写,并在那里访问原始reqeust($ _SERVER ['HTTP_REQUEST_URI'])。您将获得在请求中指定的路径,您可以使用explode()函数在斜杠中分隔该路径。