Php Apache Mod Rewrite keep get参数

Php Apache Mod Rewrite keep get参数,php,apache,mod-rewrite,Php,Apache,Mod Rewrite,首先,我不是mod rewrite的专家,但我有一个URL需要重定向 原始URL是categories.asp?cat1=1&cat2=2&cat3=58&cat4=96 我需要将其重定向到/store/browse/category/TRADITIONAL-BRIDGE-SINK-MIXER/product details/1901 TRADITIONAL-BRIDGE-SINK-MIXER NDSMC 很明显,将会有很多这样的事情要做,我很高兴依次写下每一条规则 我希望这是有道理的 提前谢谢

首先,我不是mod rewrite的专家,但我有一个URL需要重定向

原始URL是
categories.asp?cat1=1&cat2=2&cat3=58&cat4=96

我需要将其重定向到
/store/browse/category/TRADITIONAL-BRIDGE-SINK-MIXER/product details/1901 TRADITIONAL-BRIDGE-SINK-MIXER NDSMC

很明显,将会有很多这样的事情要做,我很高兴依次写下每一条规则

我希望这是有道理的


提前谢谢。

我想还有很多事情要做,不仅仅是修改

您首先需要实现以下目标:

  • 允许将每个类别和产品的URL部分存储在数据库中的某个位置(可能基于语言)
  • 通过将每个类别的这些URL部分连接到具体的产品,显示产品的URL
    • 假设产品链接到的类别的关键字为
      TRADITIONAL-BRIDGE-SINK-MIXER
      ,该产品的关键字为
      1901 TRADITIONAL-BRIDGE-SINK-MIXER NDSMC
    • 然后您可以生成此URL:
      /store/browse/category/TRADITIONAL-BRIDGE-SINK-MIXER/product details/1901 TRADITIONAL-BRIDGE-SINK-MIXER NDSMC
  • 然后在.htaccess中,您将有如下内容:
RewriteCond%{REQUEST\u FILENAME}-F
重写规则^store\/browse\/category\/(.*)\/product details\/(.*)$product.php?category\u id=$1&product\u id=$2[QSA,L]
对于类别也一样,比如对于URL
/store/browse/category/SINK-MIXER/TRADITIONAL-BRIDGE-SINK-MIXER/1901 TRADITIONAL BRIDGE-SINK-MIXER NDSMC
,您将有如下规则:

RewriteCond%{REQUEST\u FILENAME}-F
重写规则^store\/browse\/category\/(.*)\/(.*)\/(.*)$categories.php?categoriy1\u id=$1和categoriy2\u id=$2和categoriy3\u id=$3[QSA,L]

这不是一个解决方案,这只是一个起点…

您的意思是希望在内部重写url时保留get参数?看看
QSA
标志。在某种意义上不保留参数,但是?cat1=1&cat2=2&cat3=58&cat4=96将进入一个页面,而?cat1=1&cat2=2&cat3=58&cat4=92将进入另一个页面。我希望这是一件相当简单的事情。我不储存的细节,因为这些链接来自一个旧的网站,所有我试图做的是维护链接。我尝试了301,但在使用参数时它会中断。如果是这种情况,我会创建一些输入脚本,使用mod_rewrite将任何
/store/browse/category/*
URL发送到该输入脚本(比如
old_URL\u redirect.php
),该脚本将解析该旧URL,获取所需的数据块,找到新的URL并将用户重定向到新的URL…愿上帝与你同在!嗯,我很乐意这么做。好主意。不幸的是,我不能,因为系统使用404错误从索引页重定向和建立整个网站。