RewriteRule 301重定向整个目录和子目录

时间:2018-10-25 15:48:38

标签: apache .htaccess redirect http-status-code-301 http-redirect

我真的需要您的帮助...

我只是想将目录中的所有内容重定向到另一个目录。当我阅读它时,它看起来很简单,但是在现实生活中,它不起作用...这是我现在的整个.htaccess文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# Redirect all to HTTPS
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.org/$1 [R]
# End redirect

#301 REDIRECTS
Options +FollowSymLinks
RewriteRule ^mydir/(.*)$ /mydir-and-more/$1 [R=301,NC,L]
  • Fisrt,其中有一些Wordpress内容没弄乱。
  • 然后,我从某个站点复制/粘贴了将http重定向到https的代码。它运作良好。请注意,我从列表中删除了“ L”参数,以确保我的下一个规则将起作用。
  • 我正在努力的部分来了。

所以,确实是这样。我的新目录以与旧目录相同的词开头。 我从那里复制了这一行:https://coolestguidesontheplanet.com/redirecting-a-web-folder-directory-to-another-in-htaccess/

在Apache网站(https://httpd.apache.org/docs/current/mod/mod_rewrite.html)上,我应该在^和mydir之间使用/。试过了,没用。

我尝试将Options + FollowSymLinks移动到文件顶部。没事。

当我使用这样的东西时:

RedirectMatch 301 ^/mydir/ https://example.org/mydir-and-more/

这有效。但是只能移动确切的/ mydir /地址。它不会移动整个目录。另外,如果我键入https://example.org/mydir时不带最后一个/,则它将不起作用。如果我在重定向匹配项中添加/,则由于其相同的单词而不再起作用!

所以,我在这里完全感到困惑!请,对此有任何专家建议吗?谢谢!

2 个答案:

答案 0 :(得分:0)

您需要在wordpress定义的规则之前移动规则。 实际上,如果您尝试访问站点,则重写规则的详细说明将在

处停止
RewriteRule . /index.php [L]

该指令的意思是“管理尚未由上规则管理的所有路径并停止细化([L]代表最后一个)”。

您可以安全地将规则放在wordpress规则之上,最好放在ifmodule中

<IfModule mod_rewrite.c>
RewriteRule ^/mydir/(.*)$ /mydir-and-more/$1 [R=301,NC,L]
</IfModule>

# BEGIN WordPress

答案 1 :(得分:0)

最有趣的是,我鬼混解决了我的问题!我实际上并不需要RewriteRule,我只需要写而不是RewriteRule就是这样:

Redirect 301 /mydir https://example.org/mydir-and-more

我什至不需要Option + FollowSymLinks。