Apache Mod_Rewrite Сценарий - PullRequest
       7

Apache Mod_Rewrite Сценарий

0 голосов
/ 26 марта 2012

Мне было интересно, как бы я сделал сложный mod_rewrite.Ниже в основном, как я хочу это сделать.


Если пользователь переходит к:

- http://files.stuff.example.txt.r.site.com/doc.txt

Тогда сервер будет переписать URLдо:

- http://r.site.com/index.php?type=txt&username=example&dir=files.stuff&file=doc.txt


Улучшение изображения:

- http://[dir3 -dir2-dir1]. [имя пользователя].[type] .r.site.com / [file]

Переписывает на:

- http://r.site.com/index.php?type=[type]&username=[username]&dir=[dir3.dir2.dir1]&file=[file]


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

(не может вставлять изображения) посмотрите здесь:

http://i.stack.imgur.com/24H8j.png

Первые поддоменыструктура каталогов (показана красным цветом), поэтому количество поддоменов может измениться.

Я надеюсь, что кто-то может предложить мне решение.Либо с помощью mod_rewrite или, возможно, другой метод.Спасибо.

1 Ответ

1 голос
/ 26 марта 2012

При условии, что вы настроили свой DNS так, чтобы запрошенный URL попадал на сервер, где находится ваше приложение (возможно, подстановочный DNS в вашем домене: * .site.com -> 123.45.67.89, если поддерживается вашим DNS-сервером / хостингом), вы Можно создать более или менее сложное правило перезаписи. Я бы сделал это так:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(.*).r.site.com$
RewriteCond $1 !^index.php
RewriteRule (.*) index.php?subdomain_part=%1&file_part=$1

Таким образом, в index.php вы получаете $_GET['subdomain_part'] и $_GET['file_part'], которые вы можете проанализировать далее для извлечения параметров в соответствии с вашим соглашением.

Конечно, вы можете написать более сложное регулярное выражение, чтобы получить части URL, извлеченные mod_rewrite (я сам не такой эксперт по регулярным выражениям). Однако выполнять синтаксический анализ в PHP будет намного проще, и вы сможете лучше обрабатывать ошибки (например, если URL сформирован неправильно).

...