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

问题描述 投票:0回答:2

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

我只是想将目录中的所有内容重定向到另一个目录。当我读到它时它看起来很简单,但在现实生活中,它不起作用......这是我现在的整个.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]
  • 首先,有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,它将无法正常工作。如果我在重定向匹配中添加/,它不再起作用,因为它是相同的单词!

所以,我在这里,完全糊涂了!请问,有专家建议吗?谢谢!!

apache .htaccess redirect http-status-code-301 http-redirect
2个回答
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

0
投票

最有趣的是,我通过鬼混来解决我的问题!我真的不需要RewriteRule,所有我需要写的而不是RewriteRule就是这样:

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

我甚至不需要Options + FollowSymLinks。

© www.soinside.com 2019 - 2024. All rights reserved.