Я пытаюсь написать Apache mod_rewrite, который может принимать информацию из поддомена и после домена и передавать ее как пару переменных в сценарий PHP.
Вот что у меня есть до сих пор, с этим я могу получить либо субдомен, либо аргументы URL.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^./]+)\.domain\.com/([a-zA-Z0-9/-]+)$
RewriteCond %1 !=www
RewriteRule ^ redirect.php?subdomain=%1&args=$2
RewriteRule ^/?([a-zA-Z0-9/-]+)$ redirect.php?args=$1 [L]
mod_rewrite включен, и мы используем A-запись с подстановочными знаками, чтобы направлять весь трафик на этот сервер * .domain.com
Кроме того, я прошу прощения, если это опубликовано в другом месте, я пытался решить эту проблему в течение последнего месяца и не понял этого, или нашел ответ, опубликованный где-либо.
Как уже упоминал Шейн Мэдден, первая RewriteCond
не похоже, что это будет соответствовать чему-либо. Причина двоякая: во-первых, первый .
не экранирован и, во-вторых, переменная% {HTTP_HOST} не содержит косой черты, поэтому весь раздел после domain\.com
ничего не будет совпадать.
RewriteCond %{HTTP_HOST} ^([^./]+)\.domain\.com/([a-zA-Z0-9/-]+)$
Я никогда раньше не использовал% 1 в левой части RewriteCond. Если вы не уверены, что это работает, если у вас возникнут другие проблемы, попробуйте удалить эту строку, чтобы устранить ее как возможную причину. Также не должно быть =
войдите там. Просто !www
это то, что вы хотите здесь. Если у вас есть проблемы с этой строкой, измените ее, чтобы использовать %{HTTP_HOST}
переменная вместо% 1.
RewriteCond %1 !=www
В $2
при подстановке этого RewriteRule не имеет подходящего набора скобок в шаблоне, поэтому он будет пустым. Возможно, вы захотите добавить к этому более крупный узор. Если у него есть только один подходящий набор скобок, $ 1 будет тем, что вам нужно, даже если у вас уже есть% 1 в замене. Я подозреваю, вы тоже захотите сделать это /redirect.php...
если вы делаете это в файлах конфигурации, а не в .htaccess.
RewriteRule ^ redirect.php?subdomain=%1&args=$2
Кроме того, я мог бы добавить, что сопоставление просто ^
склонен к образованию петель. Будьте осторожны с этим.