दिलचस्प पोस्ट
OSX पर जीसीसी अपडेट करें HTTP प्राप्त अनुरोध स्ट्रिंग्स का सही एन्कोडिंग क्या है? Git repos के लिए मैं समान स्ट्रिंग कैसे सक्षम करूं? सीएसएस जस्टिफ़ टेक्स्ट, बिन्दुओं के साथ अंतरिक्ष भरें त्रुटि LNK2005: xxx पहले से ही MSVCRT.lib (MSVCR100.dll) में परिभाषित है C: \ some \ LIBCMT.lib (setlocal.obj) एंड्रॉइड स्टूडियो में इम्यूलेटर प्रारंभ नहीं होता है शेल स्क्रिप्ट से जेएमएक्स एमबीईई विधि को कॉल करना जीजीटीएस (ईक्लिप्स) और जावा 1.8 में असंगत JVM मैं यह कैसे पता लगा सकता हूं कि एंड्रॉइड फोन साइलेंट मोड में प्रोग्रामेटिक रूप से है कॉपी कन्स्ट्रक्टर अक्षम करें कैसे एक एकल उद्धरण AVK के अंदर से बचें जावा विधि को रिक्त तर्क के साथ प्रेषण DataGridView पंक्ति शीर्षलेख में टेक्स्ट जोड़ना Scanf मतलब में अंतरिक्ष क्या है? जब इन्फ्लेटर ApplicationContext के साथ प्रयोग किया जाता है तो थीम / स्टाइल लागू नहीं होती है

Yii2 htaccess – कैसे फ्रंटएण्ड / वेब और बैकएंड / वेब पूरी तरह से छिपाने के लिए

मुझे लगता है कि मैं बहुत करीब हूँ मेरे पास एचटीएसी एक्सेस वेबसाइट (फ्रंटएंड / वेब) और /admin पथ ( backend/web ) पर पुनर्निर्देशित है। साइट ठीक लगती है, सीएसएस फ़ाइलें लोड हो रहा है, आदि।

यदि आप जाएं: http: // localhost / yii2app / – यह होमपेज को लोड करता है, और एड्रेस बार में रीडायरेक्ट नहीं करता है, लेकिन पेज सभी यूआरएल में फ्रंटएंड / वेब दिखाता है।

अगर आप यहां जाएं: http: // localhost / yii2app / admin – यह बैकेंड लॉगिन पृष्ठ लोड करता है, हालांकि यह तुरंत एड्रेस बार (बदसूरत) में / बैकएंड / वेब / साइट / लॉगिन पर रीडायरेक्ट करता है।

समस्या: यूआरएल में frontend/backend पथ दिख रहे हैं (एड्रेस बार और पेज पर लिंक)।

मुझे क्या चाहिए: मैं चाहता हूं कि पूरी साइट को फ्रंटएंड / बैकेंड लिंक न दिखाए। प्रोजेक्ट की जड़ को दर्शाने के बिना फ्रंटएण्ड frontend/web से (अदृश्य) खींचना चाहिए .. इसलिए http: // localhost / yii2app / मेरा पूरा दृश्य चलाता है, और http: // localhost / yii2app / admin / my full backend चलाता है

क्यूं कर? मुझे लगता है कि एक सर्वर पर रहते समय यह सेटअप बहुत ही ठोस और सुरुचिपूर्ण होगा। मैं अपने प्रोजेक्ट फ़ोल्डर को किसी साइट पर लाइव करने में सक्षम होना चाहता हूं और स्थानीय बनाम सर्वर को प्रबंधित करने के लिए हैक्स नहीं किए बिना यह ठीक काम करता है I

.htaccess फ़ाइल में /yii2app डायर:

 Options -Indexes RewriteEngine on <IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/ RewriteCond %{REQUEST_URI} admin RewriteRule .* backend/web/index.php [L] RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/ RewriteCond %{REQUEST_URI} !admin RewriteRule .* frontend/web/index.php [L] </IfModule> 

अब फ्रंटएण्ड और बैकेंड वेब निर्देशिका में, दोनों में एक ही है .htaccess :

 RewriteEngine on # if a directory or a file exists, use the request directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward the request to index.php RewriteRule . index.php 

मैं /frontend/web या /backend/web कभी नहीं देखना चाहता हूं 🙂

मैंने रूट के htaccess में यूआरएल को जोड़ने /admin लिए RewriteRule के साथ खेलने की कोशिश की है, लेकिन यह कह रहा है /admin मौजूद नहीं है I मुझे पता है कि यह अस्तित्व में नहीं है, और मैं नहीं चाहता कि यह अस्तित्व में है। मैं इसे सापेक्ष पथ होना चाहता हूं .. यानी: / admin == / बैकएंड / वेब

दूसरे तरीके से कहा मैं परियोजना के जड़ ( http: // localhost / yii2app / ) में सब कुछ अग्रभूमि frontend/web लोड करने के लिए, लेकिन इसे दिखाने के बिना। साथ ही, http: // localhost / yii2app / admin को backend/web लोड करने और बस http: // localhost / yii2app / admin दिखा रहा है जाहिर है, उनके पास उनके संबंधित controller/action संलग्न होंगी। तो व्यवस्थापक http: // localhost / yii2app / admin / site / login की तरह दिख सकता है

नोट: मैंने किसी भी फाइल के साथ नहीं खेला है यह स्टॉक yii2 उन्नत सेटअप है, संगीतकार का उपयोग कर, और डॉक्स का अनुसरण कर रहा है। मैंने अभी तक के साथ खेला है केवल एक चीज है htaccess फ़ाइलें उल्लेख किया

धन्यवाद!

Solutions Collecting From Web of "Yii2 htaccess – कैसे फ्रंटएण्ड / वेब और बैकएंड / वेब पूरी तरह से छिपाने के लिए"

अगर आपका एकमात्र लक्ष्य है कि कभी भी /frontend/web या /backend/web देखकर हासिल नहीं किया जाए, यहां तक ​​कि .htaccess नियमों का उपयोग किए बिना, आप निम्न के लिए जा सकते हैं:

क्यों न सिर्फ web फ़ोल्डरों की सामग्री को बाहर खींचें और उन्हें रूट में रखें? बस प्रविष्टि स्क्रिप्ट index.php में रूपरेखा और कॉन्फ़िग फाइल्स को संदर्भित करने वाला पथ समायोजित करें।

आपका डीआईआर संरचना ऐसा दिखेगा:

 - yii2app/ - frontend/ - backend/ - common/ - .. other folders.. - admin/ - assets/ - css/ - index.php - assets/ - css/ - index.php 

आपका yii2app/index.php तब दिखाई देगा:

 defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/vendor/autoload.php'); require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php'); require(__DIR__ . '/common/config/bootstrap.php'); require(__DIR__ . '/frontend/config/bootstrap.php'); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/common/config/main.php'), require(__DIR__ . '/common/config/main-local.php'), require(__DIR__ . '/frontend/config/main.php'), require(__DIR__ . '/frontend/config/main-local.php') ); $application = new yii\web\Application($config); $application->run(); 

और आपका yii2app/admin/index.php ऐसा दिखेगा:

 defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); require(__DIR__ . '/../common/config/bootstrap.php'); require(__DIR__ . '/../backend/config/bootstrap.php'); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/../common/config/main.php'), require(__DIR__ . '/../common/config/main-local.php'), require(__DIR__ . '/../backend/config/main.php'), require(__DIR__ . '/../backend/config/main-local.php') ); $application = new yii\web\Application($config); $application->run(); 

संपादित करें: आपकी प्रविष्टि स्क्रिप्ट मेरे लिए अलग दिख सकती है, लेकिन इन उदाहरणों के साथ फ्रेमवर्क फ़ाइलों को खोजने के लिए आपको पथ बदलने का विचार प्राप्त करना चाहिए।

.htaccess के साथ इस कोशिश करो विधि-

चरण 1

रूट फ़ोल्डर में .htaccess फ़ाइल बनाएं, अर्थात् advanced/.htaccess और कोड नीचे लिखें।

 Options +FollowSymlinks RewriteEngine On # deal with admin first RewriteCond %{REQUEST_URI} ^/(admin) <------ RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L] RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L] RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/ <------ RewriteCond %{REQUEST_URI} ^/(admin) <------ RewriteRule ^.*$ backend/web/index.php [L] RewriteCond %{REQUEST_URI} ^/(assets|css) <------ RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L] RewriteRule ^css/(.*)$ frontend/web/css/$1 [L] RewriteRule ^js/(.*)$ frontend/web/js/$1 [L] RewriteRule ^images/(.*)$ frontend/web/images/$1 [L] RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/ <------ RewriteCond %{REQUEST_URI} !index.php RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ frontend/web/index.php 

नोट : यदि आप स्थानीय सर्वर में कोशिश कर रहे हैं तो ^/ साथ ^/project_name/ जहां आप तीर चिह्न देखते हैं। उन तीर चिह्नों को निकालें <------ सेटअप के बाद।

चरण 2

अब आम निर्देशिका में एक components/Request.php फ़ाइल बनाएं और इस फ़ाइल में कोड नीचे लिखें।

 namespace common\components; class Request extends \yii\web\Request { public $web; public $adminUrl; public function getBaseUrl(){ return str_replace($this->web, "", parent::getBaseUrl()) . $this->adminUrl; } /* If you don't have this function, the admin site will 404 if you leave off the trailing slash. Eg: Wouldn't work: site.com/admin Would work: site.com/admin/ Using this function, both will work. */ public function resolvePathInfo(){ if($this->getUrl() === $this->adminUrl){ return ""; }else{ return parent::resolvePathInfo(); } } } 

चरण 3

घटक स्थापित कर रहा है क्रमशः frontend/config/main.php और backend/config/main.php फाइल में कोड नीचे लिखें।

 //frontend, under components array 'request'=>[ 'class' => 'common\components\Request', 'web'=> '/frontend/web' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ], // backend, under components array 'request'=>[ 'class' => 'common\components\Request', 'web'=> '/backend/web', 'adminUrl' => '/admin' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ], 

चरण 4 (वैकल्पिक, यदि चरण तीन तक काम नहीं करता है)

वेब निर्देशिका में .htaccess फ़ाइल बनाएँ

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L] 

नोट: सुनिश्चित करें कि आपने अपाचे में अपने मॉड रीडलाइट को सक्षम किया है

बस! आप अपनी परियोजना के साथ प्रयास कर सकते हैं
www.project.com/admin , www.project.com

स्थानीय सर्वर में
localhost/project_name/admin , localhost/project_name

@ डीएसीएस की तरह कहा गया है कि केवल फ्रंटएण्ड / वेब से yii2app (रूट फ़ोल्डर) की फ़ाइलों को ले जाएं और yii2app "admin" में एक फ़ोल्डर बनाएं और बैकएंड / वेब से yii2app / admin पर फ़ाइलों को ले जाएं और फिर दोनों व्यवस्थापक और yii2app में .htaccess फ़ाइलें बनाएं निम्नलिखित कोड:

 Options +FollowSymLinks IndexIgnore */* RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php 

फिर यूआरएल मैनेजर घटक को कॉन्फ़िग फाइल में main.php में जोड़ें / संशोधित करें, दोनों में फ्रंटएंड / कॉन्फ़िग / मेन.एफ़पी और बैकएण्ड / कॉन्फिग / मेन.फिप निम्नलिखित कोड के साथ:

  'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'enableStrictParsing' => false, 'rules' => [ ], ], 

फिर निम्नलिखित कोड के साथ yii2app में index.php को बदलें:

 <?php defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/vendor/autoload.php'); require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php'); require(__DIR__ . '/common/config/bootstrap.php'); require(__DIR__ . '/frontend/config/bootstrap.php'); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/common/config/main.php'), require(__DIR__ . '/common/config/main-local.php'), require(__DIR__ . '/frontend/config/main.php'), require(__DIR__ . '/frontend/config/main-local.php') ); $application = new yii\web\Application($config); $application->run(); 

निम्नलिखित कोड के साथ yii2app / admin में index.php को भी बदलें:

 <?php defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); require(__DIR__ . '/../common/config/bootstrap.php'); require(__DIR__ . '/../backend/config/bootstrap.php'); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/../common/config/main.php'), require(__DIR__ . '/../common/config/main-local.php'), require(__DIR__ . '/../backend/config/main.php'), require(__DIR__ . '/../backend/config/main-local.php') ); $application = new yii\web\Application($config); $application->run(); 

ये आपको yii2 में एसईओ दोस्ताना यूआरएल को पूरा करने की जरूरत है। मैं खुद को संघर्ष कर रहा था और फिर मुझे @ डीएसीएस के उत्तर से मदद मिली और मुझे यद्यपि शायद यह किसी की मदद करे।

2 दिनों के बाद सबसे अच्छा समाधान खोजने के लिए मैं इसे इस तरह से (होस्टिंग साझा पर मेजबान) मैं subdomain admin.xxxxx.com और रूट /public_html/xxxxxx/backend/web दस्तावेज़ करने के लिए इसे इंगित करें
चूंकि साझा होस्टिंग आपको मुख्य डोमेन के लिए कस्टम दस्तावेज़ जड़ रखने की अनुमति नहीं देता, इसलिए मैं इस समाधान का उपयोग करता हूं:

अपने खाते पर प्राथमिक डोमेन नाम बदलें, फिर पुरानी प्राथमिक डोमेन को एक addon डोमेन के रूप में जोड़ें। इस तरह, आप प्राथमिक डोमेन / नए एडन डोमेन के लिए इच्छित मूल फ़ोल्डर चुन सकते हैं। (नया प्राथमिक डोमेन अब public_html को इंगित करेगा।)

फिर बिंदु (अब मेरे addon डोमेन) को अग्रसारित /public_html/xxxxxx/frontend/web लिए दायाँ दस्तावेज़ रूट के लिए

मैंने "डेक" का जवाब दिया और निम्नलिखित त्रुटि मिली

 Invalid Configuration – yii\base\InvalidConfigException The directory does not exist: D:/wamp/www/yii2app/assets 

तो मैंने "yii2app" में "संपत्ति" फ़ोल्डर बनाया है और यह काम करता है

———- दूसरा तरीका ————————

फ़ाइलों को स्थानांतरित करने के बाद आप निम्न लिंक का पालन कर सकते हैं

https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/start-installation.md

———- तीसरा तरीका —————————–

http://www.yiiframework.com/doc-2.0/guide-tutorial-shared-hosting.html