.htaccess htaccess 301重定向不重定向

p5fdfcr1  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(272)

尝试了几种方法进行重定向,但都不成功

Redirect 301 /ru/pages/portfolio/ /ru/pages/portfolio/3/ [END,R=301]

Redirect 301 http://myssite/en/pages/portfolio http://myssite/en/pages/portfolio/3

和许多其他来自互联网的,但它们都不工作。需要重定向pages/portfoliopages/portfolio/3(所有语言- en,ru)

这是文件的内容

<IfModule mod_rewrite.c>

  # Turn Off mod_dir Redirect For Existing Directories
  DirectorySlash Off
  # Rewrite For Public Folder
  RewriteEngine on

 Redirect 301 /ru/pages/portfolio/ /ru/pages/portfolio/3/ [END,R=301]

  RewriteCond $1 !^(pma)
  RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
eanckbw9

eanckbw91#

因为你已经在使用mod_rewrite(用于 internal rewrite),所以你也应该使用mod_rewrite来重定向,而不是使用mod_alias Redirect。在请求过程中,不同的模块在不同的时间执行,而不管配置文件中指令的顺序。
但是,您的示例并不清楚,第一个示例包含一个尾随斜杠;第二个没有?后面有斜杠吗?
RewriteEngine指令之后尝试类似以下的内容:

RewriteRule ^(en|ru)/pages/portfolio$ /$1/pages/portfolio/3 [R,L]

这不包括尾部的斜杠。假设“所有语言”都是enru。这也是一个临时的(302)重定向。只有当你确定它工作正常时,才能更改为永久的(301)重定向(如果这是你的意图),因为301是由浏览器缓存的。在测试之前,你需要清除浏览器的缓存。

Redirect 301 /ru/pages/portfolio/ /ru/pages/portfolio/3/ [END,R=301]
:
Redirect 301 http://myssite/en/pages/portfolio http://myssite/en/pages/portfolio/3
  • 旁白:* 这两个都不起作用。像[END,R=301]这样的结束标志是mod_rewrite语法,与mod_alias(Redirect)无关。Redirect指令匹配的URL路径应该是以斜杠开头的根目录相对路径,而不是绝对URL。请参阅Apache文档... https://httpd.apache.org/docs/current/mod/mod_alias.html#redirect

相关问题