2013-02-15 66 views
14

मैं इस यूआरएल http://www.sample.com/amateur1 से उत्पादन env (http://www.sample.com/amateur1/web/app.php) में अपने सिम्फनी ऐप तक पहुंचना चाहता हूं।साझा-होस्टिंग पर Symfony2 को कैसे तैनात करें?

है कि मैं इस सामग्री के साथ http://www.sample.com/amateur1/.htaccess को .htacces फ़ाइल ले जाया करने के लिए:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteBase /web/ 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ app.php [QSA,L] 
</IfModule> 

लेकिन जब मैं http://www.sample.com/amateur1 के लिए जाने के लिए एक 404 त्रुटि दिखाता है, और prod.log नहीं लिखा है।

मैं भी RewriteBase /amateur1/web/ इस्तेमाल किया क्योंकि मैं नहीं जानता कि यदि RewriteBase पथ सर्वर DocumentRoot के सापेक्ष है, या पथ जहाँ .htaccess फ़ाइल स्थित है। इसके अलावा इस जवाब Symfony2: How to deploy in subdirectory (Apache)

तीन कोशिश के साथ

के कारण /amateur1 और /amateur1/ RewriteBase के रूप में करने की कोशिश की, अपवाद पेज unstyled प्रकट होता है, और किसी भी छवि लोड नहीं। लेकिन फिर मुझे prod.log फ़ाइल में निम्न त्रुटि मिलती है:

[2013-02-15 02:06:47] request.ERROR: Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for "GET /amateur1/" (uncaught exception) at /home/u105859802/public_html/amateur1/app/cache/prod/classes.php line 5121 [] [] 

मैं क्या गलत कर रहा हूं?

+0

क्या आपने config.php की जांच की? यह आपको यादृच्छिक आवश्यकताओं को दिखाता है –

उत्तर

23

अपने विन्यास में, अपाचे दस्तावेज़ रूट के रूप में public_html का उपयोग करता

Symfony2 निर्देशिका /home/u105859802/public_html/amateur1 में स्थापित है, तो सेवा करने के लिए Symfony सार्वजनिक निर्देशिका /home/u105859802/public_html/amateur1/web/

है आप का उपयोग करना चाहिए

RewriteBase /amateur1/web/ 

लेकिन सावधान रहें, यह सुरक्षित नहीं है
आपके पास है अपनी सिम्फनी निर्देशिकाओं की रक्षा के लिए! (कॉन्फ़िगरेशन सुलभ है)

आप अपने निजी क्षेत्र में अपनी सिम्फनी फ़ाइलों को स्थानांतरित करने का प्रयास क्यों नहीं करते?
आप public_html

को Symfony वेब निर्देशिका नाम बदल सकते हैं देखें how to do that in documentation cookbook

तो, मेरी सिफारिश संरचना नीचे दिखाई देता है:

  • /घर/u105859802/
    • विक्रेता
    • src
    • ऐप
    • बिन
    • public_html< (symfony2 में डिफ़ॉल्ट रूप से वेब) - केवल सार्वजनिक निर्देशिका
+0

क्या आपका मतलब है कि मेरा एसएफ डीआईआर */home/u105859802/शौकिया 1/* */home/u105859802/public_html/* के भाई (भाई) होने और */public_html/* dir में डालने का मतलब है मेरे */वेब/* डायरेक्टॉय की सामग्री। फिर * public_html/.htaccess * फ़ाइल को * रीवाइटबेस * के बिना सबकुछ ऐप पर रीडायरेक्ट करना चाहिए या बस * रिवाइटबेस/* सही होना चाहिए? इस तरह 'रिवाइट्रूल^(। *) $ app.php [क्यूएसए, एल] '। – Jeflopo

+0

अब मैं इसे आजमा नहीं सकता, मुझे जवाब स्वीकार करने से पहले इसे आज़माएं। इस उपयोगी जानकारी के लिए धन्यवाद! – Jeflopo

+0

एक आकर्षण की तरह काम किया !!! स्व-परीक्षा – Jeflopo

0

उस मामले में होस्टिंग साझा, आप ओवरराइड नहीं कर सकते अपाचे सेटिंग्स से अधिकांश में एक पुनर्निर्देशन नियम लिखने की आवश्यकता हो सकती है।htaccess फ़ाइल

Options +FollowSymLinks +ExecCGI 

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC] 
RewriteRule !^projectName/ /projectName/web/app.php/%{REQUEST_URI} [L,NC] 

यह नियम है जो मैंने अपनी परियोजना में उपयोग किया था। आपको अपनी संपत्तियों के लिए अन्य मार्गों को पूरा करने की आवश्यकता हो सकती है, जिन्हें वे लोड नहीं करेंगे।