mod_rewrite espression за мултиклиентско приложение

Имам php приложение, което обслужва множество клиенти. Кодът се поставя в корена на домейна и се споделя за всички клиенти. Всеки клиент може да получи достъп до своята страница, като използва параметъра на низа на заявката „id“.

Имам нужда от съвет и примерен код как да постигна това маршрутизиране чрез mod_rewrite или е по-добър начин да го направя чрез php скрипт за маршрутизиране:

Начална страница:

www.example.com/customerA --> www.example.com/customerA/main?id=1
www.example.com/customerB --> www.example.com/customerB/main?id=4

Забележка: "main" е main.php файл, който не показва файлови разширения. Клиентските подпапки не са истинските.

Вътрешните страници използват допълнителни параметри като:

www.example.com/customerA/page1?id=1&par1=5

От СТРАНАТА НА СЪРВЪРА всички пренаписвания трябва да се интерпретират като www.example.com/main?id=4 без виртуална подпапка.

Благодаря.


person Erik    schedule 21.03.2012    source източник


Отговори (1)


Ето какво трябва да работи:

RewriteRule ^/customerA /customerA/main?id=1 [QSA,NC,R=301,L]
RewriteRule ^/customerB /customerB/main?id=4 [QSA,NC,R=301,L]

RewriteRule ^/(customer(A|B))/main /main [QSA,NC]

След като отговорих точно на въпроса ви, почти съм сигурен, че не е това, което искате. Ако имате много клиенти, направих огромен отговор тук на въпрос, който беше за филми, но вие се отнася за клиенти, но принципът е абсолютно същият.


Ако искате да сте по-общи:

# if URL is not a real file...
RewriteCond %{SCRIPT_FILENAME} !-f
# if URL is not a real folder...
RewriteCond %{SCRIPT_FILENAME} !-d
# ...and if adding "php" points to a real file...
RewriteCond %{SCRIPT_FILENAME}.php -f
# ...then rewrite internally with "php" extension:
RewriteRule (.*) $1.php [QSA,NC]

Надявам се това да помогне.

person Olivier Pons    schedule 21.03.2012
comment
Тъй като нямам много клиенти, принципът е ОК. Но изглежда, че не работи според желанията. Бих искал да използвам по-динамично правило за пренаписване за използваните php файлове. Сега сте кодирали main, който всъщност е main.php в правилото. Има ли начин да използвате някой от *.php файловете в правилото. - person Erik; 04.04.2012
comment
Промених отговора си. Надявам се, че всичко е наред ;) - person Olivier Pons; 04.04.2012