mod_rewrite перенаправляет инстедад переписывания - PullRequest
1 голос
/ 04 июля 2011

Я, должно быть, упускаю что-то очевидное, но я не могу заставить это работать

Я хочу иметь хорошие URL с поддоменами, но вместо некоторых каталогов я хочу прочитать содержимое поддоменов из файла:

RewriteEngine On
RewriteBase /
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^subdomain.example.com
RewriteRule (.*) http://example.com/subdomain.php

Эти правила работают, но если я ввожу subdomain.example.com, я перенаправлен на example.com/subdomain.php - но я не хочу этого, я просто хочу переписать URL-адрес внутри. .

Большое спасибо! Я пытался [QSA, L], не работают.

Ответы [ 2 ]

3 голосов
/ 04 июля 2011

Если вы замените это:

RewriteRule (.*) http://example.com/subdomain.php

С этим, я подозреваю, это будет работать так, как вы ожидаете:

RewriteRule (.*) subdomain.php

Нет необходимости переписывать домен, если вы на самом делеЕсли вы хотите перенаправить на другой домен, вам нужно только переписать запрос, чтобы указать на соответствующий файл.Действительно, как вы обнаружили, переписывание домена приведет к перенаправлению.Обычно RewriteRule соответствует всем запросам после домена, поэтому только путь и запрос.

1 голос
/ 04 июля 2011

Вместо того, чтобы использовать mod rewrite для этого, если у вас есть доступ к элементам управления DNS вашего домена, вы можете установить поддомен перехвата с подстановочным знаком («%» или «*»), который направляет в тот же локальный каталог.Там у вас может быть PHP-скрипт, на который направляются все запросы:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php?p=$1 [L]

, и он будет запускать все запросы в этот файл PHP.Там вы можете найти что-то, что проверяет переменные $ _SERVER для запрашиваемого домена, и средство проверки, чтобы увидеть поддомен.Там он может использовать что-то вроде подпрограммы file_get_contents () для пересылки соответствующих данных клиенту и иметь 404 или 403 ответа заголовка, если сделан запрос, который может быть действительным, но не на этот поддомен.

надеюсь, что это имеет смысл ...

...