【发布时间】: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