htaccess 301重定向不重定向

时间:2017-06-06 13:22:32

标签: .htaccess

尝试了几种方法来进行重定向,但没有成功

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 个答案:

答案 0 :(得分:1)

由于您已经在使用mod_rewrite(对于内部重写),您还应该使用mod_rewrite进行此重定向,而不是使用mod_alias Redirect。尽管配置文件中的指令明显有序,但不同的模块在请求期间的不同时间执行。

但是,你的例子还不清楚。第一个例子包括一个斜杠;第二个不?是否有斜杠?

RewriteEngine指令后尝试使用以下内容:

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

这排除了尾随斜线。并假设“所有语言”仅为enru。这也是临时(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