RewriteRule независимо от конечного слэша в .htaccess

0

Я хочу перенаправить URL-адреса независимо от конечных слешей. Причина в том, что мой сайт по умолчанию использует конечные слэши; если во внутренней ссылке отсутствует завершающая косая черта, у меня есть цепочка перенаправления (/ test -> / test / -> / go-here /).

Я пробовал:

  • Это не работает: RewriteRule ^test(/$|$) /go-here/ [R=301,L]
  • Это работает: Redirect 301 /test /go-here/(но я не хочу этого делать)

По сути, я хочу хороший способ перенаправить URL-адреса для экземпляра, подобного приведенному ниже, без необходимости иметь тонны строк в моем файле .htacess.

  • /test -> /go-here/
  • /test/ -> /go-here/
Райан Дорн
источник

Ответы:

0

Используя оператор "Once of Nonce", который сокращен от {0,1}

RewriteRule ^test/?$ /go-here/ [R=301,L]
samson4649
источник
0

Как уже упоминалось выше, вы можете использовать? Оператор, чтобы сопоставить его с косой чертой и без, это самый точный способ.

Однако стоит упомянуть еще один способ - сопоставить начало строки. ^ соответствует началу, а $ соответствует концу строки в регулярном выражении. Обычно люди включают оба из них, но вам не нужно включать их обоих или даже любой из них (если вы хотите сопоставить строку в середине, которая не находится вблизи начала или конца).

Таким образом, это также выполнит то, что вы после:

RewriteRule ^ test / go-here / [L, R = 301]

Все, что начинается с «test», будет сопоставлено, независимо от косой черты или чего-либо еще, что последует.

Будьте осторожны, так как это также будет соответствовать / testing или / tester.

Профессор Фалькен
источник