Из Вашего вопроса вместе с комментариями, кажется, вы хотите, чтобы перенаправить запрос от example.co с и без www
к page.php?code=anything after
, если это правильно, то вы можете попробовать:
# match example.co with and without www
RewriteCond %{HTTP_HOST} ^(www\.)?example\.co$ [NC]
# make sure we don't redirect page.php
RewriteCond %{REQUEST_FILENAME} !page\.php
# internally redirect anything received to page.php as query string to code
RewriteRule ^(.*)$ /page.php?code=$1 [L]
Это внутренне перенаправляется, поэтому пользователь все равно будет видеть домен example.co
.
Учитывая, что вы все еще хотите использовать HTTPS, в случае, если его уже не вы можете в дальнейшем использовать эту функцию, вместо вышеприведенного правила:
# if it does not start with WWW we redirect to www.domain
# make sure the domain.co is enclosed by parenthesis like below
RewriteCond %{HTTP_HOST} !^www\.(example\.co)$ [NC]
# we use this to make sure we are redirecting the right domain
# in case of multiple domains
RewriteCond %{HTTP_HOST} example\.co$ [NC]
RewriteRule^http://%1%{REQUEST_URI} [L,R=301]
# if HTTPS is not being used we force it to HTTPS
RewriteCond %{HTTPS} !=on
# because we want to force it for this domain only
RewriteCond %{HTTP_HOST} ^example\.co$ [NC]
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# and now we finally do the internal redirect
# match example.co, we don't need to match the www anymore
RewriteCond %{HTTP_HOST} ^example\.co$ [NC]
# here we check if the file on the URL is page.php
# we don't want it redirect or we may fall into a loop
RewriteCond %{REQUEST_FILENAME} !page\.php
# internally redirect anything received to page.php as query string to code
RewriteRule ^(.*)$ /page.php?code=$1 [L]
В противном случае правило вы должны должны работать нормально:
RewriteCond %{HTTP_HOST} ^(www\.)?example\.co$ [NC]
RewriteRule ^(.*)$ https://www.example.com/page.php?code=$1 [R=302,L]
Когда домен отличается или протокол отличается, он даст перенаправление вроде этого или нет, так оно и работает.
Так что если вы попытаетесь перенаправить из домена A в домен B внутренне, это не сработает.
То же самое относится к поддомену в основном домене или других доменах или других поддоменах.
Проще говоря, вы можете перенаправить внутренне из области, о которой идет речь,.
Изменение имени домена подразумевает перенаправление, так как браузер должен сделать новый запрос с другим хостом HTTP. –
Значит ли это, что нет способа переписать адрес браузера? –
Я удалил свой ответ ниже - можете ли вы описать свою ситуацию более подробно? У вас есть домен .co' и домен .com. Вы не можете перезаписывать их между ними, если их файлы не находятся в одном и том же корневом документе virtualhost. –