Вам не нужен mod_rewrite для простых перенаправлений.
Для вас должно быть достаточно инструкций apache Redirect или RedirectMatch:
RedirectMatch 302 ^/main/(.*)$ https://my.website.com/$1
Здесь я использую перенаправление 302, так что это просто временное перенаправление, когда ваш сайт будет в порядке (и это перенаправление работает), вы должны изменить его в 301, чтобы он стал постоянным.
Теперь все, что мы делаем в нашем ответе, - это как заставить ваших веб-HTTP-клиентов использовать / demo url вместо / main / demo. Но вы жалуетесь на 404 ... хорошо, если у вас нет рабочего index.php или index.html в корневом / демо-каталоге, это 'normal' .
Так что, я полагаю, ваш вопрос не только в том, как перенаправить пользователя в другой каталог, но и в том, как создать каталог /var/www/mysite/main/demo
(или что-то в этом роде) со всеми файлами в этом каталоге, отвечая в / demo / * url а не / main / demo / *. В этой конфигурации мы можем угадать /var/www/mysite/
ваш DocumentRoot . то есть это корень вашего веб-сервера. Самое простое решение - изменить этот корень, изменив DocumentRoot на /var/www/mysite/main
. Вы можете сделать это в основной конфигурации вашего VirtualHost, может быть, вы также можете создать новый VirtualHost для вашего проекта.
Если у вас нет доступа к основной конфигурации apache, но есть только .htaccess, и если вы запускаете несколько других веб-сайтов по некоторым другим URL-адресам, мы можем найти более сложные решения (например, с помощью mod_rewrite, перенаправляющим путь к физическому каталогу на основе имени веб-сайта) , Но вам нужно будет предоставить нам больше информации, если вы хотите что-то еще.