Это должен быть прямой подход:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)\.example\.com$
RewriteRule ^ /%1%{REQUEST_URI} [QSA,END]
If перенаправит все имена хостов в домене "example.com" и удалит эту историю c "www." Приставочные люди всегда так волнуются. Это не обрабатывает основной домен (с префиксом "www." Или без него), вам нужно добавить, что если вы не используете отдельный виртуальный хост для этого специального. Материал index.php
лучше обрабатывать с помощью директивы DirectoryIndex
, которую предлагает http-сервер apache. Это приводит к менее сложным настройкам и более чистым URL.
В случае, если вы получили внутреннюю ошибку сервера (http статус 500), используя приведенное выше правило, есть вероятность, что вы используете очень старую версию apache http сервера. В этом случае вы увидите определенный намек на неподдерживаемый флаг [END]
в файле журнала ошибок http-серверов. Вы можете попытаться обновить или использовать более старый флаг [L]
, он, вероятно, будет работать так же в этой ситуации, хотя это немного зависит от вашей настройки, конечно, вам нужно будет добавить другое условие перезаписи, чтобы прервать бесконечное переписывание l oop.
Эта реализация также будет работать в конфигурации хоста http-серверов или внутри распределенного файла конфигурации (файл ".htaccess"). Очевидно, что модуль перезаписи должен быть загружен внутри http-сервера и включен на хосте http. Если вы используете распределенный файл конфигурации, вам нужно позаботиться о том, чтобы его интерпретация была включена вообще в конфигурации хоста и чтобы он находился в папке DOCUMENT_ROOT
хоста.
И общее замечание: вы всегда должны предпочитать размещать такие правила в конфигурации хоста http-серверов вместо использования распределенных файлов конфигурации (".htaccess"). Эти распределенные файлы конфигурации добавляют сложность, часто являются причиной неожиданного поведения, их трудно отладить, и они действительно замедляют работу http-сервера. Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читай: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).