Apache Mod_Rewrite - PullRequest
       6

Apache Mod_Rewrite

0 голосов
/ 26 февраля 2011

Я пытаюсь написать файл .htaccess, чтобы в основном сопоставить следующие домены:

  • dev.domain.com/$1 => index.php/dev/$1
  • api.domain.com/$1 => index.php/api/$1
  • domain.com/$1 => index.php/front/$1
  • www.domain.com/$1 => index.php/front/$1

На данный момент все отображается на index.php/$1 со следующей конфигурацией:

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

Это то, что пришло с php-фреймворком, который я использую по умолчанию. Любая помощь будет принята с благодарностью :-) Спасибо!

1 Ответ

2 голосов
/ 26 февраля 2011

Если вы хотите отобразить запрошенные пути на основе доменного имени, вы можете использовать дополнительный RewriteCond и сначала сопоставить HTTP_HOST.

Вам нужно будет умножить свой блок существующих RewriteConds и RewriteRule для каждого домена - за исключением последней пары, которая может быть просто значением по умолчанию:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^dev\.domain\.com
RewriteRule ^(.*)$ index.php/dev/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^api\.domain\.com
RewriteRule ^(.*)$ index.php/api/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/front/$1 [L]

Не проверено. Но см. Также статью об ошибке сервера Все, что вы когда-либо хотели знать о правилах Mod_Rewrite, но боялись спросить? , в которой объясняется взаимодействие между условиями и правилами перезаписи.

...