Php htaccess url中的意外参数/更改

Php htaccess url中的意外参数/更改,php,html,.htaccess,url,Php,Html,.htaccess,Url,如果我在katalog中使用链接: 它将在URL中打开: /katalog/musik/?&kategorie1=musik[NC,L] 然后是页面。 但是如果我自己在URL中打开/katalog/musik,页面也会打开。 其他规则也很好地发挥了作用,但也有一个例外 我怎样才能改变它,如果我点击一个页面上的链接,这个?&。。。没有出现 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUES

如果我在katalog中使用链接:


它将在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]

使用[QSD]标志会导致丢弃查询字符串。此标志在Apache 2.4.0及更高版本中可用

将QSD添加到重写标志:

RewriteRule ^katalog/([A-Za-z]+)/([A-Za-z]+)/([0-9]+) dienstleister.php?id=$3&kategorie1=$1&kategorie2=$2 [NC,QSD,L]
RewriteRule ^katalog/([A-Za-z]+)/([A-Za-z]+) kategorie.php?kategorie1=$1&kategorie2=$2  [NC,QSD,L]
RewriteRule ^katalog/([A-Za-z]+) kategorie.php?kategorie1=$1 [NC,QSD,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]

你认为你的链接是什么样子的?比如/katalog/musik只需为该链接创建一个规则
RewriteRule^/katalog/musik?$kategorie.php[NC,L]
如果页面有一个特殊的
GET
变量,也可以添加它。我现在刚得到一个URL
/katalog/musik/404
,但是如果我删除URL中的404,它显示了正确的网站。在禁用缓存的Chrome开发工具中进行测试,并在网络选项卡中签入您获得的301/302/404重定向URL。我使用Firefox进行了测试,结果如下。但是如果我使用Chrome浏览器,URL就像我希望的那样。这意味着你在Firefox中的缓存不好。完全清除缓存并重新测试哦,不知道缓存也会影响URL。现在正在工作,thx。不起作用,仍然是相同的结果。Apache版本IST2.4.35,但服务器API是Apache 2.0处理程序。这是否相关?