Как написать правила перенаправления для пропущенных страниц

У меня есть HTML-страница, такая как http://test.com/en/about.html но если кто-то попробует http://test.com/zh/about.html который недоступен на сервере.

Есть ли способ перенаправить его на http://test.com/en/about.html с помощью файла.htaccess. Если да, то как можно написать такие правила.

Любая помощь будет оценена.

Большое спасибо.

1 ответ

Решение

Если вы хотите заменить страницу на другую, это просто RewriteRule

RewriteRule ^zh/about.html$ /en/about.html [R,L]

Если вы хотите перенаправить все страницы на английский аналог, вы должны сначала захватить деталь после языка и добавить ее к en, Но вы должны быть осторожны и проверить, если это уже en, В противном случае у вас будет цикл перезаписи

RewriteCond %{REQUEST_URI} !^/en/
RewriteRule ^../(.*)$ /en/$1 [R,L]

Когда все работает как надо, вы можете заменить R с R=301 ( постоянное перенаправление). Никогда не тестируйте с R=301,


Чтобы иметь любой другой префикс длины, используйте .+? вместо .., Это выглядит для одного или нескольких вместо двух символов

RewriteRule ^.+?/(.*)$ /en/$1 [R,L]
Другие вопросы по тегам