php - URL-Rewrite 将如何与 3 个参数一起使用?
问题描述
我已经在 PHP 中构建了一个 URL 路由 FrontController。一切正常,但现在我发现一个错误,如果我有更多的参数然后 2 它不起作用,例如:
此网址有效:
"www.comelio.com/business-intelligence/anleser/"
但这个网址不起作用:
"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"
解决方案
在此处查看htaccess 测试器(确保在 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=
推荐阅读
- ios - 沙箱与 ionic 3 ios 构建中的 Podfile.lock 不同步
- javascript - 带有 jQuery 代码链接的引导按钮在多次单击后不更新按钮文本
- python - 即使没有 maxDF 参数,如何将 maxDF 设置为 pyspark.ml.feature.CountVectorizer?
- python - 关于写出梯形积分法的问题
- java - Spring 数据事务控制
- c++ - 如何在 gcc 8 上使用 std::filesystem?
- javascript - 如何在更新剩余对象的值时从对象中删除键值对?
- testing - 如何使用 jest 测试 redux saga?
- r - r - 从列表中打印图返回 quosure 错误
- c# - 优化 if -else 语句