带查询字符串的NGINX重定向URL

时间:2019-01-23 14:21:01

标签: linux nginx configuration webserver

我有这个NGINX配置:

root    /var/www/web;
index   index.php;

server_name  domain.com;
access_log  off;
error_log on;

location / {
    rewrite ^/(.*)$ /index.php?tag=$1&page=1 last;
}

现在,我想重定向网址,例如 从“ domain.com/index.php?tag=1§ion=2&type=3”更改为“ domain.com/tag/section/type”

我该怎么做,我应该在哪里放置代码?请帮助,

谢谢

我已经尝试过:

location / {
   rewrite ^/index\.php?tag=(.*)&section=(.*)&type=(.*)$ /$1/$2/$3 permanent;
   rewrite ^/(.*)$ /index.php?tag=$1&page=1 last;
}

但是它没有用..

1 个答案:

答案 0 :(得分:1)

<?php $con = mysqli_connect('localhost','root',''); if(!$con) { echo 'Not connected with server'; } if(!mysqli_select_db ($con,'restaurant')) { echo 'Database Not selected'; } $tablenumber = $_POST['tafelnummer']; $receiptid = $_POST['receiptid']; $menu_item = $_POST['menu_item']; $date = $_POST['date']; $sql = "INSERT INTO Orders (orders.Tafel_Id, orders.ReceiptID, orders.MenuItemID, orders.Res_Datum ) VALUES ('$tablenumber', '$receiptid', '$menu_item', '$date')"; if(!mysqli_query($con,$sql)){ echo 'insert did not work'; }else { echo 'Order created successfully'; } header("refresh:1; url=bestelling.php"); ?> rewrite指令使用不包含查询字符串的规范化URI。

要测试查询字符串,您将需要使用location语句和/或$request_uri指令来查询$argsif变量。

使用map的好处是它包含原始请求,将有助于避免重定向循环。

如果仅执行一个重定向,则$request_uri解决方案可能会超载。

尝试:

map

有关if ($request_uri ~ ^/index\.php\?tag=(.*)&section=(.*)&type=(.*)$) { return 301 /$1/$2/$3; } location / { ... } 的使用,请参见this caution