【问题标题】:htaccess rule is true but site gives 404htaccess 规则为真,但站点给出 404
【发布时间】:2014-09-06 19:47:14
【问题描述】:

我很难理解为什么这条规则在网站上不起作用。

旧网址是 /mobile/article/site/article-name,新网址只是 /article/article-name

规则是

RewriteRule ^mobile/article/tgc/(.*)$            /article/$1 [L,R=301]

使用整个 htaccess 文件对 http://htaccess.madewithlove.be/ 进行测试告诉我们

This rule was met, the new url is http://site.dev/article/article-name
Test are stopped, because of the R in your RewriteRule options. A redirect will be made with status code 301

但是当我们尝试在浏览器中点击 http://site.dev/mobile/article/site/article-name 时,我们得到的是 404 而不是重定向。

更奇怪的是,我们对另一个url也有同样的规则

RewriteRule ^resources/a/(.*)$                    http://resources.site.dev/library/$1 [L,R=301]

这是在我们陷入困境的重定向之后发生的,而且效果很好。

我们缺少什么?

【问题讨论】:

  • 你的htaccess真的说^RewriteRule吗? ^ 离那里很远,会导致语法错误,导致规则不被处理。
  • 如果你在RewriteRule之前删除^(不知道是不是类型错误还是什么)并在/article/$1之后添加[R=301,L]怎么办?另外,你还有其他规定吗?如果您正在使用某些框架,请将您的规则放在框架的主要规则之前
  • 是的,该网站在 ExpressionEngine 上运行,并且所有这些规则都是我们最先拥有的。

标签: .htaccess mod-rewrite redirect


【解决方案1】:

保持你的规则如下:

RewriteRule ^mobile/article/site/(.*)$ /article/$1 [L,NC,R=301]

【讨论】:

  • yip,这就是我们所拥有的,减去 NC 但仍然是 404
  • 确保这是您的第一条规则,并且您在 /mobile/ 文件夹或该文件夹下的任何其他文件夹中没有任何其他 .htaccess。
  • 我将您的答案标记为已接受,因为有人使用自己的 htaccess 文件将/mobile/ 目录添加到项目中。
  • 原来移动目录实际上是一个不再使用的子域,它的htaccess是为了转移到新站点。有关如何解决该问题的任何想法?
  • 您可以通过将此规则放在移动目录的htaccess中来解决它。请记住在 RewriteRule 中从 URI 模式中取出 mobile/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
  • 2014-08-08
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多