Потратил некоторое время на это и много искал. Нашел вопросы и ответы, которые почти охватывали то, что мне нужно, но не совсем...
В двух словах: попытка перенаправить пользователя на внешний домен, когда он получает ошибку 404, с сохранением URI, используя только .htaccess.
Соображения:
- Apache не знает о файлах на сервере, он динамически запрашивает их из CMS.
- Запрошенный URI может содержать необычные символы, например. ";" "="
- Необходимо избегать каких-либо сценариев на стороне сервера (например, php).
Требуемое поведение:
- Пользователь запрашивает URL
- Сервер отвечает 404
- Пользователь прозрачно перенаправляется на внешний домен с сохранением URI
Пример 1:
- Запросы пользователей: www.example.com/no/Page
- Сервер отвечает 404
- Пользователь перенаправляется на: www.newdomain.com/no/Page
Пример 2:
- Запросы пользователей: www.example.com/url;=xyz
- Сервер отвечает 404
- Пользователь перенаправляется на: www.newdomain.com/url;=xyz
Можно ли это реализовать только с помощью .htaccess?
Попытка что-то вроде строк:
RewriteEngine On
ErrorDocument 404 /404.html?u=/the/Requested/URI
RewriteCond %{REQUEST_URI} ^/404.html [NC]
RewriteCond %{QUERY_STRING} ^u=(.*)
RewriteRule (.*) http://www.newdomain.com%1? [NC,NE,L,R=301,E=nocache:1]
В основном это работает, но только с жестко запрограммированной строкой запроса... нельзя включить ее динамически.
Любые идеи, как добиться этого (если вообще)?