【问题标题】:How the URL-Rewrite will work with 3 Params aswell?URL 重写如何与 3 个参数一起工作?
【发布时间】:2019-11-13 19:45:01
【问题描述】:

我已经在 PHP 中构建了一个 URL-Routing FrontController。一切正常,但现在我发现一个错误,如果我有更多的参数然后 2 它不起作用,例如:

此网址有效: "www.comelio.com/business-intelligence/anleser/"

但是这个 URL 不起作用: "www.comelio.com/business-intelligence/data-mining/anleser/"

我的重写规则:

RewriteRule ^([\w-]+)/?([\w-]+)/?([\w-]+)/?([\w-]+)? index.php?lang=$1&rubrik=$2&unterrubrik=$3&seite=$4

这是我的路由 if-else 代码:

if($seite == null) {
  $filename = "{$rubrik}.html";
  $xdmvalue = $saxonProc->createAtomicValue($filename);
  $xsltProc->setParameter("articlePfad", $xdmvalue);

  if(in_array($filename, $filelist)) {
    $xmlFile = $dir . "/" . $filename;
    $xsltProc->setSourceFromFile($xmlFile);
  } else {
    echo "404";
  }
} else if(isset($seite) && isset($rubrik)){
  $filename = "{$rubrik}_{$seite}.html";
  $xdmvalue = $saxonProc->createAtomicValue($filename);
  $xsltProc->setParameter("articlePfad", $xdmvalue);

  if(in_array($filename, $filelist)) {
    $xmlFile = $dir . "/" . $filename;
    $xsltProc->setSourceFromFile($xmlFile);
  } else {
    echo "404";
  }
} else if(isset($seite) && isset($rubrik) && ($unterrubrik)){
  $filename = "{$rubrik}_{$unterrubrik}_{$seite}.html";
  $xdmvalue = $saxonProc->createAtomicValue($filename);
  $xsltProc->setParameter("articlePfad", $xdmvalue);

  if(in_array($filename, $filelist)) {
    $xmlFile = $dir . "/" . $filename;
    $xsltProc->setSourceFromFile($xmlFile);
  } else {
    echo "404";
  }
}

在我编写此代码之前,只有第二个参数有效,现在只有第三个参数有效,例如现在有效: "comelio.com/business-intelligence/data-mining/anleser"

这不起作用: "comelio.com/business-intelligence/anleser"

【问题讨论】:

    标签: php .htaccess url url-rewriting front-controller


    【解决方案1】:

    在此处查看htaccess Tester(确保在 URL 字段中添加 http)。

    在您的重写条件中,您只需将斜线设为可选。因此,重写器将始终拆分请求 url 以匹配 4 个部分。尝试将您的规则更改为

    RewriteRule ^([\w-]+)/?([\w-]+)?/?([\w-]+)?/?([\w-]+)? index.php?lang=$1&rubrik=$2&unterrubrik=$3&seite=$4
    

    (注意([\w-]+)后面的问号)

    这会给你
    http://www.comelio.com/index.php?lang=business-intelligence%26rubrik=data-mining%26unterrubrik=anleser%26seite=

    http://www.comelio.com/index.php?lang=business-intelligence%26rubrik=anleser%26unterrubrik=%26seite=

    【讨论】:

    • 这是对的,但我需要将“lang”参数填充到 100%。使用此 RewriteRule 它不起作用
    • 唯一没有填写的情况是你没有传递任何参数。然后是空字符串。如果您需要在那里进行特殊处理,则必须为零参数添加附加规则。
    猜你喜欢
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    相关资源
    最近更新 更多