php - htaccess 意外参数/url 更改
问题描述
如果我在目录中使用链接:
<a href="/katalog/musik">Musik</a>
它在 URL 中打开:
/katalog/musik/?&kategorie1=musik[NC,L]
然后是页面。
但是,如果我自己在 URL 中打开 /katalog/musik,页面也会打开。其他规则运行良好,也适用于 .
我该如何更改它,如果我单击页面上的链接, ?&... 不会出现。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
RewriteRule ^katalog/([A-Za-z]+)/([A-Za-z]+)/([0-9]+) dienstleister.php?id=$3&kategorie1=$1&kategorie2=$2 [NC,L]
RewriteRule ^katalog/([A-Za-z]+)/([A-Za-z]+) kategorie.php?kategorie1=$1&kategorie2=$2 [NC,L]
RewriteRule ^katalog/([A-Za-z]+) kategorie.php?kategorie1=$1 [NC,L]
解决方案
更改规则的顺序并在最后 3 条规则中添加结束锚点:
RewriteEngine on
RewriteRule ^katalog/([A-Za-z]+)/([A-Za-z]+)/([0-9]+)/?$ dienstleister.php?id=$3&kategorie1=$1&kategorie2=$2 [NC,QSA,L]
RewriteRule ^katalog/([A-Za-z]+)/([A-Za-z]+)/?$ kategorie.php?kategorie1=$1&kategorie2=$2 [NC,QSA,L]
RewriteRule ^katalog/([A-Za-z]+)/?$ kategorie.php?kategorie1=$1 [NC,QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
推荐阅读
- python - 运行文件夹中的所有 std 输入测试文件并验证结果?(Python)
- excel - 尝试将不同文件夹中的多个工作簿合并为一个主工作簿
- pandas - 如何连接多个熊猫数据框。这些数据框的名称保存在列表中
- c++ - 初始化函数参数时括号的用途是什么?
- ruby-on-rails - 此代码在转换日期和时间时是否有问题?
- azure-devops - 用于并行应用部署的 Azure DevOps Approval Gate
- flutter - 如何:在 TextFormField 中输入时每 4 个字符后添加一个空格
- javascript - “未捕获的类型错误:无法读取未定义的属性‘拆分’”用于 url 拆分
- javascript - Cordova 应用程序在首次打开时需要 Internet
- flutter - 如何在颤动日历中获取选定日期的键