Я хотел бы настроить файл htaccess, который направляет запросы для любого поддомена в файл index.php в папке /public_html/. Я уже настроил DNS для принятия поддоменов подстановочных знаков.
Я планирую предоставить пользователям персонализированный URL-адрес сайта и передать имя пользователя через субдомен, поэтому важно, чтобы URL-адрес оставался, и, следовательно, 301 переадресация не может быть и речи.
В настоящее время мой htaccess выглядит так, но не работает (сервер не найден):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.com$ [NC]
RewriteRule . /index.php?subdomain=%1 [L,QSA]
Моя конечная цель - получить URL-адрес, например //joebloggs.mydomain.com/foo/bar
чтобы перевести что-то вроде //www.mydomain.com/index.php?user=joebloggs&route=/foo/bar
.
Что мне нужно сделать в файле htaccess, чтобы сделать эту работу?
Это можно сделать так
# if request is for a subdomain (except "www")
RewriteCond %{HTTP_HOST} ^((?!www\.).+)\.mydomain\.com$ [NC]
# internally rewrite to index.php
RewriteRule ^((?!index\.php$).*)$ /index.php?subdomain=%1&route=$1 [L]
Поскольку, похоже, правило выполняется, когда вы пытаетесь перейти к index.php, не может ли это быть сделано с простой php-логикой в index.php?
Я мог бы неправильно понять вашу цель, но, похоже, вы могли бы легко заменить ее GET. Ваш url был бы готов и для этого подхода.
//username.mydomain.com/whatever/whatever
и это в конечном итоге будет переводиться на //www.mydomain.com/index.php?user=username&route=/whatever/whatever
- делает это больше смысл?