Перезапись URL создать субдомен в переполнении cakeStack

я использую CakePHP рамки 2.2.2.

Я хочу создать персонализированный URL для пользователя. Например, если пользователь вводит Имя пользователя = pragnesh,
тогда они могут получить доступ к моему сайту, как: http://pragnesh.mylocalhost.com, так же, как в blinksale.com


Мой URL: http://mylocalhost.com/test/users/front_home

Я хочу получить доступ к нему по адресу: http://test.mylocalhost.com/users/front_home

Мой URL: http://mylocalhost.com/test/setting/pages
можно получить по адресу: http://test.mylocalhost.com/setting/pages

любой URL: http://mylocalhost.com/test/xxxxx/xxxxx
можно получить по адресу: http://test.mylocalhost.com/xxxxx/xxxxx


ИЛИ ЖЕ


URL: http://mylocalhost.com/users/front_home?site=test

Я хочу получить доступ к нему по адресу: http://test.mylocalhost.com/users/front_home

Мой URL: http://mylocalhost.com/setting/pages?site=test
можно получить по адресу: http://test.mylocalhost.com/setting/pages

любой URL: http://mylocalhost.com/xxxxx/xxxxx?site=test
можно получить по адресу: http://test.mylocalhost.com/xxxxx/xxxxx


Мой вопрос может быть дубликатом Мой сайт CakePHP 2.2 не работает на поддомене
но ответа нет.

Я пробовал ниже код в \ Приложение \ webroot.htaccess

htaccess subdomai (часть 2)

RewriteCond %{QUERY_STRING} !^([^&]*&)*site=[^&]+
RewriteCond %{HTTP_HOST} !^www\.mylocalhost.com
RewriteCond %{HTTP_HOST} ([a-zA-Z0-9]+)\.mylocalhost.com
RewriteRule ^([^\.]*).php$ /$1.php?user=%1 [QSA,L,R]

Перезапись URL для субдомена

# capture first part of host name
RewriteCond %{HTTP_HOST} ^([^.]+)\.mylocalhost\.com$ [NC]
# make sure site= query parameter isn't there
RewriteCond %{QUERY_STRING} !(^|&)site= [NC]
# rewrite to current URI?site=backererence #1 from host name
RewriteRule ^ %{REQUEST_URI}?site=%1 [L,QSA]

но оба не работают для меня.

мой корневой файл .htaccss

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule    ^$ app/webroot/    [L]
RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

\ app.htaccess

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule    ^$    webroot/    [L]
RewriteRule    (.*) webroot/$1    [L]
</IfModule>

\ Приложение \ webroot.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

Виртуальный хост в httpd.conf

<VirtualHost *:80>
DocumentRoot "E:/xampp/htdocs/bsale"ServerName mylocalhost.com
ServerAlias *.mylocalhost.com
<Directory "C:/xampp/htdocs/bsale">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

ХОСТ ФАЙЛ

127.0.0.1   mylocalhost.com
127.0.0.1   *.mylocalhost.com

9

Решение

Вы можете оставить свой .htaccess как по умолчанию
CakePHP / .htaccess
CakePHP / приложение / .htaccess
CakePHP / приложение / Webroot / .htaccess

Вам понадобится виртуальный хост, который теперь указывает на ваше приложение.

Что вам действительно нужно посмотреть, так это app / Config / rout.php

взгляните на строку, которая говорит:

CakePlugin::routes();

Итак, до этого момента вы можете делать все, что вам нужно (с маршрутами).
Представим, что у пользователя johndoe есть http://johndoe.yourapp.com/

Получите поддомен из URL, примерно так:

array_shift((explode(".",'subdomain.my.com')));

с помощью:

$_SERVER['HTTP_HOST']Router::connect('/users/front_home', array('controller' => 'users', 'action' => 'front_home', $yourSubDomain));

Или просто оставьте маршрутизатор в покое и определите поддомен в вашем AppController, и используйте его в любом месте вашего приложения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]