【问题标题】:.htaccess rewrite rule ignoring string, multiple GET variables in url.htaccess重写规则忽略字符串,url中的多个GET变量
【发布时间】:2015-04-18 01:27:08
【问题描述】:

我正在尝试制定 .htaccess 重写规则来映射 4 个不同的 get 变量并排除一个字符串。字符串是不可更改的,即。永远保持不变。

当前网址是:

/car.php?make=bmw&model=z4&year=2006&color=black_metallic

应该是这样的:

car/bmw-z4-2006-black_metallic-for-sale

这是我到目前为止所做的

RewriteRule ^car/^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ car.php?make=$1&model=$2&year=$3&color=$4

现在我需要忽略漂亮网址末尾的字符串 -for-sale

非常感谢任何帮助!

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    试试这个

     RewriteRule ^car/([^/-]+)-([^/-]+)-([^/-]+)-([^/-]+)/?$ car.php?make=$1&model=$2&year=$3&color=$4 [QSA,NC,L]
    

    【讨论】:

      【解决方案2】:

      您的分隔符是连字符而不是正斜杠,因此您的 RewriteRule 也应该相应地处理:

      Options -MultiViews
      RewriteEngine On
      
      RewriteRule ^car/^([^-]+)-([^-]+)-([^-]+)-([^-]+) car.php?make=$1&model=$2&year=$3&color=$4 [L,QSA,NC]
      
      • 选项MultiViews 由运行之前 mod_rewriteApache's content negotiation module 使用,并使Apache 服务器匹配文件的扩展名。所以/file 可以在 URL 中,但它会服务于/file.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-29
        • 1970-01-01
        • 2017-04-29
        • 2017-05-03
        • 2013-07-11
        • 1970-01-01
        • 2019-03-19
        • 2019-03-13
        相关资源
        最近更新 更多