首页 > 解决方案 > 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]

标签: phphtml.htaccessurl

解决方案


更改规则的顺序并在最后 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]

推荐阅读