Çoklu Web Sitesi Için Url Düzenleme

Arkadaşlar ben bi web sayfası için url ler hakkında yardım isticektim

4 tane sub domainden oluşan bi web sayfası yapmak istiyorum

a.site.com

b.site.com

c.site.com

d.site.com

aynı frameworkun içine 4 tane modül kurdum url set etme ile ilgili kısmı tam beceremedim.

-modules

–a

—conrollers

—views

–b

—conrollers

—views

–c

—conrollers

—views

–d

—conrollers

—views

url kısmına http://a.site.com yazınca --> http://site.com/index.php/a modülüne gitsin istiyorum

url kısmına http://b.site.com yazınca --> http://site.com/index.php/b modülüne gitsin istiyorum

url kısmına http://c.site.com yazınca --> http://site.com/index.php/c modülüne gitsin istiyorum

url kısmına http://d.site.com yazınca --> http://site.com/index.php/d modülüne gitsin istiyorum

http://www.yiiframework.com/forum/index.php/topic/33406-submodule-as-subdomain/page__p__160836#entry160836

bu konuya baktım ama daha açık anlaşılır bi şekilde adımları yazabilirmisiniz.

/protected/config/main.php içeriğinde böyle bir değişiklik iş görür diye düşünüyorum:

<?php

$subdomains = array(

        'a',


        'b',


        'c',


        'd',


    );

$domain = $_SERVER[‘SERVER_NAME’];

$tmp = explode(’.’, $domain);

$subdomain = current($tmp);

if (!isset($subdomains[$subdomain]))

{

echo 'Bu sub domain tanımlı değil: ' . &#036;subdomain;


return array();

}

return array(

'name'=&gt;'Web Application',


'defaultController' =&gt; &#036;subdomain,


....

);

?>

çalışması için framework’ un her subdomain dizininde kopyası olması gerekir. bunu ya slink ile yapabilirsiniz ya da daha basit çözüm:

sunucuda her subdomain’ e bir index.php oluşturup istediğiniz adrese yönlendirmesi için php de redirect komutunu kullanabilirsiniz.

örneğin:

a.site.com’ un index.php’ si:




<?php 

   header( 'Location: http ://site.com/index.php/a' );

?>



teşekkürler cwvap için bi deneyeyim hemen.

Sonucu merak ettim.

Bilgilendirirsen sevinirim.

çalışmadı :(

DoaminManager.php adında bi dosya ekledim components in içine

domain manager.php




<?php

/* 

 * To change this license header, choose License Headers in Project Properties.

 * To change this template file, choose Tools | Templates

 * and open the template in the editor.

 */

echo "çalışıyor";

class DomainManager

{

        public static function route()

        {

                //check if domain is valid/active and set it to Yii::app()->params['store_domain'] + some other things like preloaded store AR

               

                //add url rules with domain names

                $urls = array(

                        // your main site domain from config

                        'http://tr.uludag/<controller:\w+>/<id:\d+>'=>'tr/<controller>/view',

                        //'http://' . Yii::app()->params['tr.uludag'] . '/<controller:\w+>/<id:\d+>'=>'tr/<controller>/view',


                        // store domain/subdomain

                        'http://en.uludag/<controller:\w+>/<id:\d+>'=>'en/<controller>/view',

                        // all other rules

                );


                Yii::app()->getUrlManager()->addRules($urls);

        }

}

?>



daha sonra main config in içinde çağırdım.

config/main




return array(

	'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',

	'name'=>'My Web Application',

        'language'=>'tr',

        'onBeginRequest' => array('DomainManager', 'route'), /* Burada Çağırdım */

    

	// preloading 'log' component

	'preload'=>array('log'),



sonra apace server ımı ayarlaım ve restart ettim

apache config /* httpd.conf */




<VirtualHost *:80>

ServerName http://tr.uludag

DocumentRoot "C:/wamp/www/yiiurl/"

</VirtualHost>


<VirtualHost *:80>

ServerName http://en.uludag

DocumentRoot "C:/wamp/www/yiiurl/"

</VirtualHost>


<VirtualHost *:80>

ServerName http://localhost

DocumentRoot "C:/wamp/www/"

</VirtualHost>



sonra windows un System32/drivers/etc/host dizinine yölendirmeyi yazdım




127.0.0.1       localhost

127.0.0.1       en.uludag

127.0.0.1       tr.uludag



Browserdan tr.uludag dediğimde -> site/index e gidiyo ben ->tr.uludag/tr/default/index e gitsin istiyorum

Browserdan en.uludag dediğimde -> yine site/index e gidiyo ->en.uludag/en/default/index e gitsin istiyorum

Ben tr.uludag/tr/default/index e göndertemedim bi türlü

Uludağ Bilişimde misin? :)

hayır :) hocam

yanlız hala problemi çözemedim :(




<VirtualHost *:80>

ServerName undesired.example.com

ServerAlias example.com notthis.example.com


Redirect / http://www.example.com/

</VirtualHost>


<VirtualHost *:80>

ServerName www.example.com

</VirtualHost>



Denemedim ama belki işini görür

server kısmında bi sıkıntı yok zaten yazdım onu dikkat edersen.

yiinin içine kadar istek geliyo zaten. sorun yiinin içindeki class da.

url den ilgili modülü çalıştırması gerekirken çalıştırmıyo.

yani url ye göre yönlendirme yapılan DomainManager.php dosyasına bi atraksyon yapmak gerekiyo onu beceremedim.

Merhaba @efe,

birden fazla domainle çalışabilmeniz için size farklı bir önerim olacak,

1- sub-domainleri tanımlayıp hepsini tek bir yere yönlendirin,

2- yönlendirdiğiniz yerin içerisinde Yii Frameworku ve kodlarınızı yerleştirin,

3- tanımladığınız her bir sub-domaini projenizin veritabanındaki bir tabloya ekleyin (böylelikle her bir sub-domain için birer ID oluşturulmuş olur),

4- gelen isteğe göre hangi sub domainle ilgili işlem yapılmak isteniyorsa o ID ye göre işlemlerinizi yapın

yüzlerce sub-domainin yönetimini bu şekilde yapabiliyoruz.

Bunların artıları eksileri tartışılabilir,

Örneğin bölümlerinize ait tek bir CMS ve yüzlerce temayı tek bir projeyle kolayca yönetebilirsiniz,

Böylelikle hem versiyon takibinizi kolay takip edebilir, hemde bir sub domain için yapılan işlevleri modül olarak ekleyip diğer sub-domainlerin de kullanımına sunabilirsiniz, bu arada extensionları da tek bir yerde toplamış olursunuz. vs. vs.

ftp bilgilerinizi kimseyle paylaşmamanız gerekir (eksi gibi görünsede aslında olması gereken de budur)

merhaba bu regx leri main congig içerisine direkt eklediğinde aynı sonucumu alıyorsun.

// your main site domain from config

http://tr.uludag/<controller:\w+>/<id:\d+>’=>‘tr/<controller>/view’,

http://en.uludag/<controller:\w+>/<id:\d+>’=>‘en/<controller>/view’,

Beliki şunu yapabilirsin. CApplication abstract bir class olduğundan bunu extend edip yeni bir apliaction class oluşturabilirsin tabi burada preinit overide ederek

hocam database de tablo açıp url lere id vermek kolay da bunu yii ye nasıl yaptırcam onu biraz açarmısın. (gelen URL ye göre yii hangi işi yapcak ona yii de nasıl karar verdirtcem onu bilmiyorum ki zaten)

mesela

http://tr.uludag dediğimde adres çubuguna yii url ye göre nasıl işlem yapacak.

zaten yazdığım class da da şu url ye göre şunu yap dedirtemedim ki. senin söylediğini yapabilcek seviyede olsam yii de bu şekilde de çözcek bi kaç şey aklıma gelir.

URL yi explode edip yönlendirme yapınca SİTE/İNDEX in içinde oluyo ama o da çok amatör bi çözüm oldu.

Daha detaylı bu yazdığım örnek üzerinden cavap verebilir misin ?

YUKARIDA YAZDIĞIM ÖRNEĞİ (domainmanager.php dosyasını)




'http://en.uludag'=>'en/Default/index',

                    'http://en.uludag/<controller:\w+>'=>'en/<controller>/index',

                    'http://en.uludag/<controller:\w+>/<action:\w+>'=>'en/<controller>/<action>',

                    

                    'http://tr.uludag'=>'tr/Default/index',

                    'http://tr.uludag/<controller:\w+>'=>'tr/<controller>/index',

                    'http://tr.uludag/<controller:\w+>/<action:\w+>'=>'tr/<controller>/<action>',




bu şekilde düzenletince çalışıyo.

ek olarak farklı kurallar yazmak için ayrı bi dosya üzerinden gittim. main / config de de yapılabilr bunlar ama ektra bişe tanımlamak gerekirse ileride sorun olmasın diye.

benzer durumda olan arkadaşlara kaynak olması açısından bu haliyle gayet güzel çalışıyo.

yardımcı olan arkadaşlara teşekkür ederim.

Domain manager dedigin dosya zate Yii de Url Manager adinda var orada Yii nin thema ve language ozelliklerini kullansaydiniz daha guzel bir cozum olurdu. Bu sekilde biz ayni kodla 100 un uzerinde site yonetiyoruz.

Cevabın için teşekkür ederim.

Bir önceki cevabımda zaten aynı işi yaptığını yazdım dikkat edersen.(damainmanagerin.php)

yapı olarak da tema kullanmak ile aynı zaten dosya yapısına bakarsan.

Eger framework kullaniyorsan ek dosyalar yazmak yerine framawork ozelliklerini kullanmanin daha guzel bir cozum olacagini yazdim. Tabi karar sizin saygilar.

Tema kullanmadım böyle bi çözüm aklıma geldi. eğer vaktin varsa tema ile ilgili detaylı bi başlık açıp bi örneği paylaşırsan benim gibi yeni başlayanlara da kaynak olur.

benimde konya diyetisyen adlı web sitem var bu sorunları bende yaşadım