htaccess根据网址PHP

时间:2017-07-13 14:54:23

标签: php .htaccess

首先:如果你对这个问题有更好的称号,请告诉我。 您好,我有一个使用get变量加载内容的站点。 让我向你解释一下。

我的索引php文件:

<?php

    #check if get parameter page exists 
    #check if file exists
    require $_GET['page] . '.php'; //if it exists require its content    

?>

通过这种方式,用户可以访问我的网站并写下以下网址:

http://localhost/loremipsum?page=home

http://localhost/loremipsum?page=help

但为了获得更清晰的网址,我编辑了我的.htaccess文件,以获取这些网址:

http://localhost/loremipsum/home

http://localhost/loremipsum/help

.htaccess:              RewriteEngine On         RewriteBase /         RewriteCond%{REQUEST_FILENAME}! - f         RewriteCond%{REQUEST_FILENAME}!-d         RewriteRule ^(。*)/ loremipsum /?pg = $ 1 [L]     

但我得到了一个我需要其他参数的点,对于下一个网址,我希望将userpreferences作为page参数,将something作为fav作为http://localhost/loremipsum/userpreferences&fav=something 参数

这样的网址会起作用:

http://localhost/loremipsum/userpreferences/something

但目标是获得这样的网址:

RewriteRule ^(.*)/userpreferences/(a-zA-Z0-9)+ /loremipsum/?pg=$1&fav=$2 [L]

问题是我尝试过的任何东西都没有用,这是我认为它应该有效但却没有:

RewriteRule ^userpreferences/(a-zA-Z0-9)+ /loremipsum/?pg=userpreferences&fav=$1 [L]

更新

我知道只有当page参数等于userpreferences并且我正在考虑做

时才应用此规则
$a = $db->get_results("SELECT * FROM database WHERE id ");
$i=1;
    while ($b = mysqli_fetch_array($a)) { 
        $oauth_token[$i] = $b["oauth_token"]; 
        $oauth_secret[$i] = $b["oauth_secret"];
        $i++; }

但它不起作用,似乎用户偏好不是字符串而且我收到服务器错误。

1 个答案:

答案 0 :(得分:1)

您可以像这样制作重写规则:

RewriteRule ^(.*)$ index.php?parameter=$1 [NC]

然后你得到:

index.php?parameter=param/value/param/value

从浏览器中获得:

http://localhost/parameter/param/value/param/value

在PHP文件中,您可以访问您的参数:

<?php

$parameter = explode( "/", $_GET['parameter'] );
for($i = 0; $i < count($parameter); $i+=2) {

  echo $parameter[$i] ." has value: ". $parameter[$i+1] ."<br />";

}

?>