尝试了几种方法进行重定向,但都不成功
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/portfolio
到pages/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>
1条答案
按热度按时间eanckbw91#
因为你已经在使用mod_rewrite(用于 internal rewrite),所以你也应该使用mod_rewrite来重定向,而不是使用mod_alias
Redirect
。在请求过程中,不同的模块在不同的时间执行,而不管配置文件中指令的顺序。但是,您的示例并不清楚,第一个示例包含一个尾随斜杠;第二个没有?后面有斜杠吗?
在
RewriteEngine
指令之后尝试类似以下的内容:这不包括尾部的斜杠。假设“所有语言”都是
en
和ru
。这也是一个临时的(302)重定向。只有当你确定它工作正常时,才能更改为永久的(301)重定向(如果这是你的意图),因为301是由浏览器缓存的。在测试之前,你需要清除浏览器的缓存。[END,R=301]
这样的结束标志是mod_rewrite语法,与mod_alias(Redirect
)无关。Redirect
指令匹配的URL路径应该是以斜杠开头的根目录相对路径,而不是绝对URL。请参阅Apache文档... https://httpd.apache.org/docs/current/mod/mod_alias.html#redirect