Перенаправление RewriteRule 301 для всего каталога и подкаталогов - PullRequest
0 голосов
/ 25 октября 2018

Мне очень нужна ваша помощь с этим ...

Я просто пытаюсь перенаправить ВСЕ в одном каталоге в другой.Когда я читаю об этом, это выглядит просто, но в реальной жизни это не работает ... Вот весь мой файл .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 в Didnне связывайтесь с.
  • Затем код, который я скопировал / вставил с какого-то сайта, перенаправил 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 / address. Он не перемещает весь каталог. Кроме того, если я введу https://example.org/mydir без последнего /, он не будет работать. Если я добавлю / в совпадении Redirect, он не 'больше не работает, потому что это одно и то же слово!

Итак, я в замешательстве! Пожалуйста, любой эксперт посоветует это? Спасибо !!

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Самое смешное, я решил свою проблему, дурачясь!Мне действительно не нужен RewriteRule, все, что мне нужно было написать вместо RewriteRule, было именно так:

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

Мне даже не нужны Options + FollowSymLinks.

0 голосов
/ 25 октября 2018

Вы должны переместить свои правила до тех, которые определены WordPress.Фактически, если вы пытаетесь получить доступ к вашему сайту, разработка правил перезаписи останавливается на

RewriteRule . /index.php [L]

Эта инструкция означает «управлять всеми путями, которые еще не beign, управляются верхним правилом, и останавливать разработку ([L] означает последний»).) ".

Вы можете смело ставить свои правила над правилами wordpress, лучше в ifmodule

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

# BEGIN WordPress
...