【问题标题】:.htaccess url rewriting failed overnight.htaccess url 重写一夜之间失败
【发布时间】:2020-03-23 10:37:11
【问题描述】:

最近发生了一些奇怪的事情。 以下 htaccess 重定向/url 重写代码在一个月内运行良好。但是今天开始给出错误代码500。 我问过我的托管服务提供商,他说他将所有代码都迁移到了新服务器上。我不明白为什么它现在不起作用。相同的代码运行了将近一个月。

我想要达到的目标:

www.example.com/22     ---should go to-->     www.example.com/view.php?iid=22

代码:

RewriteEngine on
RewriteRule ^([0-9]+) view.php?iid=$1 [NC, L]

PHP 版本:7.2

【问题讨论】:

  • 如果“他们迁移了”,那么他们应该能够分辨出差异。所以 为什么 东西坏了,你应该如何修复它们。如果他们不能或不会,那么是时候更换您的提供商了。

标签: php .htaccess url-rewriting url-routing


【解决方案1】:

用这个替换你的规则:

RewriteRule ^(\d+)/?$ view.php?iid=$1 [QSA,L]

即:

使用锚点 $ 仅匹配 URI 中的数字,并且标志 [...] 中没有空格

【讨论】:

  • 您可能会对此进行一些调查,但您可以看到我解决问题的答案是在您回答之前 13 分钟发布的。
【解决方案2】:

我不知道如何,但通过从 [NC, L] 中删除 NC 解决了这个问题

新代码如下所示:

RewriteRule ^([0-9]+)$   view.php?iid=$1 [L]

【讨论】:

  • 您不仅删除了NC,还按照其他答案的指示添加了锚点。 NC 不区分大小写,数字没有大小写,因此没有影响。
  • 如果您注意到我的回答已经通过删除 NC 并添加锚点为您解决了这个问题。
  • I don't know how but the issue got fixed by removing NC from [NC, L]:我的回答中已经回答了这个如何。由于NC,L 之间存在空格,您收到了500 错误。
  • 但是为什么在我的新服务器上会发生这种情况?在我的旧服务器上,相同的代码可以工作
猜你喜欢
  • 2020-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多