尝试了几种方法来进行重定向,但没有成功
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>
答案 0 :(得分:1)
由于您已经在使用mod_rewrite(对于内部重写),您还应该使用mod_rewrite进行此重定向,而不是使用mod_alias Redirect
。尽管配置文件中的指令明显有序,但不同的模块在请求期间的不同时间执行。
但是,你的例子还不清楚。第一个例子包括一个斜杠;第二个不?是否有斜杠?
在RewriteEngine
指令后尝试使用以下内容:
RewriteRule ^(en|ru)/pages/portfolio$ /$1/pages/portfolio/3 [R,L]
这排除了尾随斜线。并假设“所有语言”仅为en
和ru
。这也是临时(302)重定向。只有当您确定它正常工作时才更改为永久(301)重定向(如果这是意图),因为浏览器会缓存301s。在测试之前,您需要清除浏览器缓存。
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