我真的需要您的帮助...
我只是想将目录中的所有内容重定向到另一个目录。当我阅读它时,它看起来很简单,但是在现实生活中,它不起作用...这是我现在的整个.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]
所以,确实是这样。我的新目录以与旧目录相同的词开头。 我从那里复制了这一行: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时不带最后一个/,则它将不起作用。如果我在重定向匹配项中添加/,则由于其相同的单词而不再起作用!
所以,我在这里完全感到困惑!请,对此有任何专家建议吗?谢谢!
答案 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。