Я искал вокруг (и здесь, и в Google), и я не могу найти ответ, который действительно работает для меня. По сути, у меня есть два физических сервера (dev-сервер и рабочий сервер), и я хочу иметь возможность использовать один файл .htaccess в моем git-репо.
Обычно это не сложно, но у меня есть два домена: example.com
и longexample.com
. Я установил longexample.com
и dev.longexample.com
для CNAME на example.com
(и dev.example.com
) на своем хосте DNS и установил apache ServerName / ServerAlias на обоих серверах:
dev server:
ServerName dev.example.com
ServerAlias dev.longexample.com
prod server:
ServerName example.com
ServerAlias longexample.com
ServerAlias www.example.com
ServerAlias www.longexample.com
Вот мой файл .htaccess:
Options +FollowSymlinks +Indexes
RewriteEngine on
# RewriteCond %{HTTP_HOST} ^www.longexample.com$ [NC,OR]
# RewriteCond %{HTTP_HOST} ^longexample.com$ [NC,OR]
# RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
# RewriteRule ^(.*)$ http://example.com/$1 [R,N]
RewriteCond %{HTTP_HOST} ^dev\.longexample\.com$ [NC]
RewriteRule ^(.*)$ http://dev.example.com/$1 [R,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]
RewriteCond %{THE_REQUEST} ^GET\ ([^\.]+)\.(html|htm) [NC]
RewriteRule ^([^\.]+)\.(html|htm)$ %1 [R,NC,L]
Предположительно, первые два блока должны переписать prod и dev для правильных URL (я сделаю их 301, когда все будет работать), но, похоже, это не работает. Как сейчас, ничего не делает. Если я установлю RewriteRule на [N]
вместо [L]
, это даст мне бесконечный цикл.
Первый блок закомментирован, потому что, если я получу его на dev-сервере, решение для prod должно быть очевидным. Последний блок делает запрос на перенаправление example.com/about.html
на example.com/about
(при этом все еще используется файл /about.html
. Эта часть работает нормально.
Есть ли проблемы с использованием двух доменов? Я также попытался использовать %{SERVER_NAME}
вместо %{HTTP_HOST}
, но ничего не изменилось.