2015-01-04 5 views
12

मैं कोणीय और Yii2 को एकीकृत के साथ एक समस्या है मैं 2 भागों है है, जब मैं कोणीय भाग में यूआरएल कॉपी और पेस्ट करता हूं तो मुझे हमेशा 404 त्रुटि मिलती है। कोणीय configYii2 + AngularJS

.config(function($routeProvider, $locationProvider) { 
    base = '/construct/'; 
    $routeProvider.when(base+':className', { 
     templateUrl: '/construct/builder', 
     controller: 'BuilderCtrl', 
     reloadOnSearch: false 
    }).otherwise({ 
     templateUrl: '/construct/heroes', 
     controller: 'HeroesCtrl' 
    }); 

    $locationProvider.html5Mode(true); 
    }); 

तो है, मैं कैसे एचटीएमएल 5 मोड काम में सीधे संपर्क उचित पृष्ठों को देखने के कर सकते हैं? "/ निर्माण/कुछ" जैसे पथ काम नहीं करते हैं। मेरे इनको है:

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 
+0

क्या आप हमें यूआरएल दिखा सकते हैं कि कौन से कोणीय अनुरोध कर रहे हैं और 404 प्राप्त कर रहे हैं ?? एक निर्देशिका नाम या yii2 नियंत्रक नाम 'निर्माण' भी है? – leninhasda

उत्तर

0

क्योंकि आप वर्चुअल निर्देशिका पर काम कर रहे हैं (जैसे उर्फ ​​/ साइट/"/ dir /"), आप

RewriteBase/साइट/ अपने अपाचे विन्यास फाइल में उपयोग करना चाहिए ।

+0

संसाधन: http://stackoverflow.com/questions/24974407/htaccess-yii-2-configuration –

+0

लेकिन yii ऐप ऐसे htaccess के साथ ठीक काम करता है। अगर कोणीय के यूआरएल जैसा कि मैंने पहले नोटिस किया है तो समस्या मौजूद है –

0

क्या आपने यूआरएल प्रबंधक के लिए कॉन्फ़िगरेशन में सुंदर यूआरएल सक्षम किए हैं? http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#using-pretty-urls

कोणीय के पास इस समस्या से कोई लेना देना नहीं है, अगर आप सीधे यूआरएल तक पहुंचते हैं और यह काम नहीं कर रहा है तो यह आपके कॉन्फ़िगरेशन में कुछ गड़बड़ है।

1

htaccess फ़ाइल सही लगती है, लेकिन यदि आप अपने वेब सर्वर के DocumentRoot और अलग फ़ोल्डर में अपने webapp है, तो आप इस तरह अपने htaccess फ़ाइल somthing में RewriteBase पथ की स्थापना द्वारा शुरू करने के लिए की आवश्यकता होगी एक यूनिक्स आधारित OS का उपयोग कर यदि:

RewriteEngine on 

RewriteBase /~userName/pathToYourYiiProject/web 

# 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 

जब अपने नाविक से मैन्युअल रूप से पथ को स्वीकार तो आप अगर सुंदर यूआरएल पहले सक्रिय हो जाते हैं की जाँच करने की आवश्यकता होगी आप परिणाम नहीं मिलता है:

'urlManager' => [ 
       'class' => 'yii\web\UrlManager', 
       'enablePrettyUrl' => true, 
       'showScriptName' => false, 
      ], 

(जाँच Yii आधिकारिक दस्तावेज के लिए मिहाई के लिंक)

जांचें कि अगर आपके apache configs में rewrite_module सक्रिय है। सक्षम और एक लिनक्स ओएस में mod_rewrite लोड करने के लिए आप उन लिपियों शुरू करने के लिए करना होगा: अंत में याद रखें कि (2.3.9 से) हाल ही में अपाचे संस्करण "AllowOverride कोई नहीं" डिफ़ॉल्ट रूप से है

$ cat /etc/apache2/mods-available/rewrite.load 
$ sudo a2enmod rewrite 
$ ls -al /etc/apache2/mods-enabled/rewrite.load 

, आप परिवर्तन करना होगा इसे /etc/apache2/apache2.conf में "सभी को ओवरराइड करने दें" (फिर से लिनक्स ओएस में पथ यह नहीं जानता कि यह अन्य ओएस में समान है)। अपने अपाचे सर्वर को पुनरारंभ करें & अपने नेविगेटर में मैन्युअल रूप से पथ को दोबारा जांचें, अगर आपको जेसन प्रारूप परिणाम मिलते हैं, तो आपका बैक-एंड ठीक काम कर रहा है & कोणीय जेएस इसके साथ संवाद करने में सक्षम होना चाहिए।

1

समस्या यह है कि आपके वेब सर्वर को सभी पथों के लिए AngularJS अनुक्रमणिका दृश्य की सेवा करनी चाहिए जो/निर्माण/से शुरू होते हैं।

अपने config में/main.php

'components' => [ 
    // other components here 
    'urlManager' => [ 
     // other URL Manager settings here 
     'rules' => [ 
      'construct/<path:(.*)>'=>'construct/index', 
     ], 
    ], 
] 

अपने नियंत्रकों/ConstructController में: यहाँ Yii2 में एक URL नियम सिर्फ इतना है कि करता है कि के लिए एक समाधान है।php:

public function actionIndex($path = '/') 
{ 
    // serve your angularJS index page here 
} 

 संबंधित मुद्दे