.htaccess代码无法工作,并在制作漂亮的网址时显示404

时间:2018-03-18 18:46:06

标签: php .htaccess

我正在尝试使用多个参数创建漂亮的URL,但似乎我无法通过我使用的.htaccess代码实现它。以下是我的.htaccess代码

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ index.php?param1=$1&param2=$2&param3=$3&param4=$4 [L,QSA]

我正在制作这样的网址,使其只能访问字母和数字中的参数。还有一些特殊的符号。

这是我正在使用的PHP代码:

if(!empty($_GET))
        {
            $myFile = "log.txt";
            $fh = fopen($myFile, 'a') or die("can't open file");
            date_default_timezone_set('Asia/Kolkata');

            $data['logTime']  = date('d M Y h:i:s A');
            $data['param1']   = $_GET['param1'];
            $data['param2']   = $_GET['param2'];
            $data['param3']   = $_GET['param3'];
            $data['param4']   = $_GET['param4'];

            $status = fwrite($fh, json_encode($data)."\n");
            fclose($fh);

            if($status > 0)
                {
                    deliver_response(200, "success", "Request Successful!");
                }

            else
                {
                    deliver_response(400, "failed", "Invalid Request!");
                }

        }

我面临的代码失败在哪里?

我想发出请求,即使没有传递URL参数,也应该在这些变量中传递默认值,以便它可以执行else块

2 个答案:

答案 0 :(得分:0)

你的代码工作,我想,我刚刚在我的服务器上测试过,而在日志文件中是txt:

{"logTime":"18 Mar 2018 03:52:58 PM","param1":"value","param2":"value","param3":"value","param4":"value"}

在你对mario的回答中,你使用url作为:

www.test.com/api/index.php?param1=value&param2=value&param3=value&param4=value 

尝试使用不带子文件夹** / api / ** index.php或将此文件夹添加到.htaccess文件

答案 1 :(得分:0)

要使用params修复错误,您可以使用if else:

    if(!empty($_GET['param1'])) {
       $data['param1']   = $_GET['param1'];
     } else {
        $data['param1'] = "nothing1";
     }

   if(!empty($_GET['param2'])) {
       $data['param2']   = $_GET['param2'];
     } else {
        $data['param2'] = "nothing2";
     }

   if(!empty($_GET['param3'])) {
       $data['param3']   = $_GET['param3'];
     } else {
        $data['param3'] = "nothing3";
     }

   if(!empty($_GET['param4'])) {
       $data['param4']   = $_GET['param4'];
     } else {
        $data['param4'] = "nothing4";
     }

在你的.htaccess文件中添加文件夹api为

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/api/?$ index.php?param1=$1&param2=$2&param3=$3&param4=$4 [L,QSA]

当然你还需要将index.php和你的log.txt文件移动到这个文件夹。