Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重写url搜索结果和分页_Php_Mod Rewrite_Url Rewriting - Fatal编程技术网

Php 重写url搜索结果和分页

Php 重写url搜索结果和分页,php,mod-rewrite,url-rewriting,Php,Mod Rewrite,Url Rewriting,嗨,伙计们,我试着用mod rewrite创建一个搜索结果url 我的网址是 products/?categorie=2&subcategorie=&make=&p=2 (P is Page) 我试过这个 RewriteRule ^products([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /? categorie=$1&subcategorie=$2&make=$3&p=$4 [L] 在这种情况下,分页不起作用 我的h

嗨,伙计们,我试着用mod rewrite创建一个搜索结果url

我的网址是

products/?categorie=2&subcategorie=&make=&p=2  (P is Page)
我试过这个

RewriteRule ^products([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /? categorie=$1&subcategorie=$2&make=$3&p=$4 [L]
在这种情况下,分页不起作用

我的htaccess看起来是这样的

RewriteEngine On
# =========== Configuracoes Default =========== #
AddDefaultCharset UTF-8
RewriteCond %{REQUEST_FILENAME} !^(.+)\.(css|js|xml|swf|pdf|doc|rtf)$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.(jpg|png|gif)$
RewriteCond %{REQUEST_FILENAME} !^(.+)\.(ttf|otf|woff|eot|svg)$
RewriteCond %{REQUEST_FILENAME} !/php/acoes.php
RewriteCond %{REQUEST_FILENAME} !favicon.ico
RewriteCond %{REQUEST_FILENAME} !apple-touch-icon.png
RewriteCond %{REQUEST_FILENAME} !robots.txt

RewriteRule ^(.+)\/?([0-9]*)\/?$ php/index.php
#RewriteRule ^products([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /? categorie=$1&subcategorie=$2&make=$3&p=$4 [L]
我的php文件位于一个名为php的文件夹中

我返回搜索结果的php文件如下

<?php
$Subcategorie_Id = mysql_real_escape_string($_REQUEST["subcategorie"]);
$Categorie_Id = mysql_real_escape_string($_REQUEST["categorie"]);
$Make_Id = mysql_real_escape_string($_REQUEST["make"]);

$SqlCount = "SELECT Product_Id FROM tabproducts WHERE Product_Status =1";
if($Categorie_Id) $SqlCount .= " AND tabproducts.Categorie_Id = '$Categorie_Id' ";
if($Subcategorie_Id) $SqlCount .= " AND tabproducts.Subcategorie_Id = '$Subcategorie_Id' ";
if($Make_Id) $SqlCount .= " AND tabproduct.Make_Id = '$Make_Id' ";
$QueryCount = mysql_query($SqlCount, $Conn) or die(mysql_error($Conn));
$RsCount = mysql_fetch_array($QueryCount);
$recordCount = mysql_num_rows($QueryCount);
if (!$_REQUEST["p"]) $p = 1;
else $p = $_REQUEST["p"];
$pageSize = 24;
$itemIni = ($pageSize*$p)-$pageSize;
$totalPage = ceil($recordCount/$pageSize);  
?>

查询在变量
%{query\u STRING}
中,而不是在URI路径中。如果传入URL是此URL:

http://example.com/products/?categorie=2&subcategorie=56&make=3&p=2

例如,根据您的问题,规则集应该如下所示:

# Check it is the correct query
RewriteCond %{QUERY_STRING}  ^categorie=[^&]*&subcategorie=[^&]*&make=[^&]*&p=[^&]*  [NC]

# Prevent loops
RewriteCond %{REQUEST_URI}  ^/products/?    [NC]

# Map silently 
RewriteRule  .*  /   [L]
无声地映射

http://example.com/products/?categorie=2&subcategorie=56&make=3&p=2

http://example.com/?categorie=2&subcategorie=56&make=3&p=2

无需将查询附加到替换URL,因为它是自动添加的

对于永久和可见重定向,请将[L]替换为[L,R=301]

注: 我认为上述几行应该放在:

RewriteEngine On
# HERE **********
# =========== Configuracoes Default =========== #
...

在您的问题中的一组规则中。

先生,您的问题到底是什么?您好@tradyblix我想知道我有多需要重写搜索url,我尝试过的url不起作用。我对您的url的结果在结果上看起来略有不同:
RewriteRule^([^/]*)/([^/]*)/([^/]*)/([^/]*))/([^/]*)$分类=$1&子分类=$2&生成=$3&p=$4[L]
。不确定省略的产品是否对您无效。Hi@MarioWing省略的产品可以用作前缀,但您的url是相同的,只是没有prefix@AlvaroLouzada:是的,我想这真的没什么区别,因为它们是一样的:/对不起!