2012-03-09 16 views
12

enter image description here में index.php को कैसे हटाएं हे लड़के मैं वाईआई ढांचे में नौसिखिया हूं। मैं अपने यूआरएल से index.php को हटाना चाहता हूं। Yii प्रलेखन के बाद जब मैं अपने .htaccess फ़ाइल में रीराइट इंजन कोड डालता हूं और मेरी config/main.php फ़ाइल में झूठी दिखाने के लिए showScriptName सेटिंग करता हूं तो मुझे 500 आंतरिक सर्वर त्रुटि मिलती है। मेरी .htaccess फ़ाइल मेरे आवेदन के रूट फ़ोल्डर में स्थित है। मुझे बताओ कि मैं कहाँ गलत कर रहा हूँवाईआई फ्रेमवर्क

अद्यतन:

यह मेरा .htaccess फ़ाइल में कोड है:

# 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 
+2

ठीक है, आपको नहीं लगता कि आपको दिखा रहा है कि एक छवि के बजाय आपको मदद मिलेगी .... –

+1

मुझे यकीन है कि वाईआईआई दस्तावेज भी इसमें शामिल है। – hakre

+2

सुनिश्चित करें कि आपके पास 'mod_rewrite' – Shiki

उत्तर

14

इस

एक अच्छा वर्णन प्रयास करें यहाँ उपलब्ध

है

http://www.yiiframework.com/doc/guide/1.1/en/topics.url#hiding-x-23x

+0

थैंक्स अखिल के साथ अपडेट किया है यह वास्तव में सहायक है ..... –

+0

आपका स्वागत है :-) –

+4

यह लिंक अब काम नहीं कर रहा है। पेस्ट की प्रतिलिपि बनाना और लेखक को प्रोपर क्रेडिट देना बेहतर है क्योंकि लिंक समय के साथ असंतोष कर सकते हैं। – WebDevPT

5

तुम भी, मुख्य पृष्ठ URL से /index को दूर अपने urlManager नियमों के शीर्ष करने के ''=>'site/index' जोड़ते हैं, ताकि तरह करना चाहते हैं:

'urlManager'=>array(
    'urlFormat'=>'path', 
    'showScriptName' => false, 
    'rules'=>array(
     ''=>'site/index', 
     '<action>'=>'site/<action>', 
3

yii documentation

index.php वहाँ छिपाई जा रही है से सीधे लिया एक और चीज है जिसे हम अपने यूआरएल को और साफ करने के लिए कर सकते हैं, यानी यूआरएल में एंट्री स्क्रिप्ट index.php को छुपाएं। इसके लिए हमें वेब सर्वर के साथ-साथ urlManager एप्लिकेशन घटक को कॉन्फ़िगर करने की आवश्यकता है।

हमें पहले वेब सर्वर को कॉन्फ़िगर करने की आवश्यकता है ताकि प्रविष्टि स्क्रिप्ट के बिना एक यूआरएल अभी भी प्रविष्टि स्क्रिप्ट द्वारा संभाला जा सके। अपाचे HTTP सर्वर के लिए, यह यूआरएल रीराइटिंग इंजन चालू करके और कुछ पुनर्लेखन नियमों को निर्दिष्ट करके किया जा सकता है। हम निम्नलिखित सामग्री के साथ फ़ाइल /wwwroot/blog/.htaccess बना सकते हैं। ध्यान दें कि उसी सामग्री को अपाचे कॉन्फ़िगरेशन फ़ाइल में निर्देशिका तत्व के भीतर/wwwroot/ब्लॉग के लिए भी रखा जा सकता है।

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 

हम तो urlManager घटक के showScriptName संपत्ति कॉन्फ़िगर गलत।

अब अगर हम इसे $-- createUrl ('पोस्ट/रीड', सरणी ('आईडी' => 100) कहते हैं, तो हम यूआरएल/पोस्ट/100 प्राप्त करेंगे। सबसे महत्वपूर्ण बात यह है कि, इस यूआरएल को हमारे वेब एप्लिकेशन द्वारा उचित रूप से पहचाना जा सकता है।

आशा है कि इससे मदद मिलती है, क्योंकि मेरी समस्या भी हल हो गई है।

0

मैं अभी इस धागे में आया लेकिन पाया कि इसे काम करने के लिए मुझे केवल hhacaccess फ़ाइल जोड़ने के लिए instrucitons का पालन नहीं करना पड़ा, बल्कि मुझे अपनी मुख्य कॉन्फ़िगरेशन फ़ाइल (\ संरक्षित \ config \ main.php):

 // uncomment the following to enable URLs in path-format 

    'urlManager'=>array(
     'urlFormat'=>'path', 
     'rules'=>array(
      '<controller:\w+>/<id:\d+>'=>'<controller>/view', 
      '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 
      '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
     ), 
    ), 
3

इन 3 चरणों कार्य करें:

  1. यूआरएल अपाचे पर फिर से लिखने के लिए सक्षम करें।

  2. स्थान।अपनी परियोजना के रूट पर इनको

RewriteEngine पर

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule . index.php 
  1. आपके विन्यास आपके url प्रबंधक घटकों के लिए इस तरह गलत पर संरक्षित/config/main.php सेट showScriptName में> > urlManager
'urlManager'=>array(
    'urlFormat'=>'path', 
    'rules'=>array(
     '<controller:\w+>/<id:\d+>'=>'<controller>/view', 
     '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 
     '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
), 
    'showScriptName'=>false, 
) 
0

मुझे आज भी यह समस्या थी जब मैंने अपनी परियोजना को लिनक्स सर्वर में स्थानांतरित कर दिया था। मैंने दिखाए गए सभी तरीकों से किया, लेकिन मदद नहीं की। फिर, मैं .htaccess फ़ाइल संरक्षित निर्देशिका भी करने के लिए की नकल की है, तो यह काम किया।

1

परिवर्तन आपके config/नीचे की तरह main.php:

'urlManager'=>array(
     'urlFormat'=>'path', 
     'showScriptName'=>false, 
     'caseSensitive'=>false, 
     'rules'=>array(
      '<controller:\w+>/<id:\d+>'=>'<controller>/view', 
      '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 
      '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
     ), 

तो संरक्षित फ़ोल्डर के साथ आधार निर्देशिका पर अपने htaccess फ़ाइल जगह अपने htaccess फ़ाइल के लिए (इसके अंदर संरक्षित किया जा सकता फ़ोल्डर) कोड नीचे जगह

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 

या इस के साथ की कोशिश ---

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

घ एक ... उम्मीद है कि यह काम करेगा

0

सुनिश्चित करें कि आपके सभी परिवर्तनों के बाद .htaccess & urlManager, यदि यह अभी भी आप में से किसी के लिए काम नहीं कर रहा है, तो यह है कि आपने रूट निर्देशिका के लिए अपने AllowOverride पैरामीटर को संशोधित किया है Apache httpd.conf फ़ाइल में "कोई नहीं" के बजाय "सभी" में। संशोधन के बाद apache पुनरारंभ करें। क्योंकि इस पैरामीटर जो अपाचे यह तय करें कि सभी मापदंडों .htaccess फ़ाइल में अधिरोहित जा सकता है

0

संशोधित अपाचे config को महत्व देता

AllowOverride कोई भी सभी

httpd में

AllowOverride जाने है .conf या httpd-vhosts.conf