【问题标题】:htaccess unexpected parameter/change in urlhtaccess 意外参数/url 更改
【发布时间】:2019-11-22 09:57:32
【问题描述】:

如果我在目录中使用链接:

<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]

【问题讨论】:

  • 你的链接是什么样子的?
  • 喜欢 /katalog/musik
  • 只需为该链接创建规则
  • RewriteRule ^/katalog/musik?$ kategorie.php [NC,L] 如果页面有一个特殊的GET 变量也添加它

标签: php html .htaccess url


【解决方案1】:

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

【讨论】:

  • 我现在只是获取 URL /katalog/musik/404,但如果我删除 URL 中的 404,它会显示正确的网站。
  • 在 Chrome 开发工具中使用 缓存禁用 进行测试,然后在“网络”选项卡中检查您获得的 301/302/404 重定向 URL 是什么。
  • 我用火狐测试过,结果如上。但是如果我使用 Chrome,那么 URL 就像我希望的那样。
  • 这意味着您在 Firefox 中的缓存不正确。彻底清除缓存并重新测试
  • 哦,不知道缓存也会影响 URL。现在工作,谢谢。
【解决方案2】:

使用 [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]

【讨论】:

  • 不起作用,结果还是一样。 Apache 版本是 2.4.35,但服务器 API 是 Apache 2.0 Handler。这相关吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
相关资源
最近更新 更多