Помогите с Regex выражением

Osmxnxn
На сайте с 12.01.2023
Offline
63
286
Не пойму как в этой форме плагина Ultimate 410 указать, чтобы все урлы с подкаталогом /en/ попадали под правило.



Чтобы такие ссылки domain.ru/en/page001/ и подобные с подкаталогом en автоматом получили 410 код и не пришлось перечислять каждую страницу. 
D
На сайте с 05.02.2022
Offline
55
#1
^https?://[^/]*/en/
ranking factor
На сайте с 01.12.2017
Offline
175
#2

Вот от Yoast Seo редирект, работает, потому что недавно ставил на 2 сайтах. В htaccess вставьте, зачем вам плагин. Ну, или если нужно именно через плагин, то ниже выражение

<IfModule mod_rewrite.c>
RewriteEngine On
RedirectMatch 410 /en/.*
</IfModule>
en/.*
J
На сайте с 20.02.2014
Offline
120
jkm
#3
ranking factor #:

Вот от Yoast Seo редирект, работает, потому что недавно ставил на 2 сайтах. В htaccess вставьте

<IfModule mod_rewrite.c>
RewriteEngine On
RedirectMatch 410 /en/.*
</IfModule>

А зачем в <IfModule mod_rewrite.c> запихивать RedirectMatch?
RewriteEngine это директива mod_rewrite.
RedirectMatch это директива mod_alias.

Логичнее

<IfModule mod_alias.c>
RedirectMatch 410 ^/en/
</IfModule>
Ну или совсем без <IfModule </IfModule>.
ranking factor
На сайте с 01.12.2017
Offline
175
#4
Отпишитесь, сработал или нет, тот и тот, может кому пригодится, заголовок темы то актуальный не только для новичков (кликабельный в серпе)
ranking factor
На сайте с 01.12.2017
Offline
175
#5
jkm #:

А зачем в <IfModule mod_rewrite.c> запихивать RedirectMatch?
RewriteEngine это директива mod_rewrite.
RedirectMatch это директива mod_alias.

Логичнее

Ну или совсем без <IfModule </IfModule>.

Не я это придумал, взял из Yoast, но если хотите подискутировать, могу ссылку скинуть к ним. Как я понимаю, в модуль прописано чтобы не мешать другим  mod_rewrite.c. Можете меня поправить, я "чайник" в этом 😃

Сейчас скрин из htaccess скину, как то привык доверять, хотя можно и в общий<IfModule mod_rewrite.c> запихнуть, но если отменить в Yoast редирект, он не сможет отменить, у него крышу снесет )

И да, написал то, что работает, а вы свой редирект проверяли или все это только теории?

# BEGIN YOAST REDIRECTS
<IfModule mod_rewrite.c>
RewriteEngine On
RedirectMatch 410 /ru/.*
</IfModule>
# END YOAST REDIRECTS

# BEGIN LSCACHE
## LITESPEED WP CACHE PLUGIN - Do not edit the contents of this block! ##
<IfModule LiteSpeed>
RewriteEngine on
CacheLookup on
RewriteRule .* - [E=Cache-Control:no-autoflush]
RewriteRule litespeed/debug/.*\.log$ - [F,L]
RewriteRule \.litespeed_conf\.dat - [F,L]
J
На сайте с 20.02.2014
Offline
120
jkm
#6
ranking factor #:
Как я понимаю, в модуль прописано чтобы не мешать другим  mod_rewrite.c.

Конструкция <IfModule проверяет наличие определённого модуля.
Такие проверки делают чтоб не упал весь сайт если вдруг нет mod_rewrite.
Когда не загружен mod_rewrite, то Apache ничего не знает о RewriteEngine, RewriteRule и прочих директивах mod_rewrite.
Если в .htaccess Apache встретит что-то незнакомое (допущена опечатка или не загружен модуль) будет синтаксическая ошибка.
В итоге вместо сайта ошибка 500.

Конструкция <IfModule mod_rewrite.c> проверит наличие mod_rewrite и если его нет, то всё содержимое секции <IfModule </IfModule> будет проигнорировано и не вызовет ошибку синтаксиса.

<IfModule mod_rewrite.c>
RewriteEngine On
RedirectMatch 410 /ru/.*
</IfModule>

Тут получается проверяем наличие mod_rewrite, а директиву используем от совсем другого модуля mod_alias.
Если нет mod_alias, а mod_rewrite есть, то будет ошибка синтаксиса.
Видимо в плагине не стали заморачиваться дополнительными проверками потому что обычно mod_alias есть и маловероятно чтобы mod_rewrite был доступен а mod_alias нет.
Так что ничего критичного тут нет.
Просто перед использованием RedirectMatch логичнее проверять наличие mod_alias <IfModule mod_alias.c>

Osmxnxn
На сайте с 12.01.2023
Offline
63
#7
Всем спасибо, закрыл таким способом страницы с подкаталогами
es|en|fr|de|community|forum|zh-cn
на новом домене.
# BEGIN 410
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(es|en|fr|de|community|forum|zh-cn)/.* - [G]
</IfModule>
# END 410
Сейчас идет переезд со старого домена, и потянулись со старого домена эти страницы. Закрыл на старом домене их так.
RewriteEngine On

RewriteCond %{REQUEST_URI} ^/(es|en|fr|de|community|forum|zh-cn)/.*$
RewriteRule ^ - [G]

RewriteCond %{HTTP_HOST} old-domain.ru
RewriteRule (.*) https://new-domain.ru/$1 [R=301,L]
Теперь страницы с подкаталогом на старом домене не редиректятся на новый а затем закрыватеся 410 кодом, а сразу закрывается 410 кодом на старом домене.

Чтобы правило работало, надо разместить в .htaccess как можно выше код. Чем выше условие, тем больше приоритет.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий