Как написать правила перенаправления для пропущенных страниц
У меня есть 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]