2014-07-16 3 views
10

उदाहरण के लिए अनुमति देता है।Laravel मार्गों काम नहीं कर रहा, अपाचे विन्यास केवल सार्वजनिक/index.php/मार्ग

मैंने कुछ SO पोस्ट देखे हैं और विभिन्न चीजों की कोशिश करने के चारों ओर गुगल किया है और इससे कोई फर्क नहीं पड़ता है (हाँ मैं हर बार अपाचे को पुनरारंभ करता हूं)।

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 
</IfModule> 

# For all files not found in the file system, reroute the request to the 
# "index.php" front controller, keeping the query string intact 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

यह अभी भी कारण हो सकता है क्या:

यहाँ सार्वजनिक निर्देशिका में मेरी .htaccess है? मैं उबंटू चला रहा हूँ।

+0

मैं सिर्फ 'ले जाने के जड़/सार्वजनिक/.htaccess जड़/.htaccess' करने के लिए और यह काम करता है –

उत्तर

12

क्या आपके पास mod_rewrite स्थापित है और अपाचे पर सक्षम है? यदि लाइन (और) को निकालने का प्रयास करें और देखें कि वेबसाइट लोड करने का प्रयास करते समय यह एक त्रुटि फेंकता है या नहीं। यदि ऐसा होता है, तो sudo a2enmod rewrite चलाएं और अपाचे को पुनरारंभ करें।

यह .htaccess मैं अपने सार्वजनिक/निर्देशिका पर है: इस व्यवहार का

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes... 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 
+0

sudo a2enmod पुनर्लेखन पर्ल: चेतावनी: सेटिंग में ऐसे स्थान में विफल रहा है। पर्ल: चेतावनी: जाँच कृपया अपने स्थान सेटिंग्स है कि: \t भाषा = (सेट नहीं), \t LC_ALL = (सेट नहीं), \t LANG = "en_US.UTF-8" का समर्थन किया और अपने सिस्टम पर स्थापित कर रहे हैं। perl: चेतावनी: मानक लोकेल ("सी") पर वापस गिरना। मॉड्यूल पुनर्लेख पहले ही सक्षम है मुझे यकीन नहीं है कि मैंने इसे सक्षम किया है ... मैं यह कहां कर सकता हूं? – user3817533

+0

ऐसा लगता है कि यह स्थापित और सक्षम है। "मॉड्यूल पुनः लिखना पहले ही सक्षम है"। क्या आप मेरी .htaccess का उपयोग करने का प्रयास कर सकते हैं? –

+0

आपका। Htaccess चाल है। मैं इसकी सराहना करता हूं। – user3817533

37

दो सबसे आम कारण हैं:

  1. mod_rewrite सक्षम नहीं

    sudo a2enmod rewrite && sudo service apache2 restart

  2. AllowOverride कोई नहीं पर सेट किया जाता है, सभी के लिए सेट, Apache2.4

    sudo nano /etc/apache2/apache2.conf

खोज <Directory /var/www/> के लिए और AllowOverride All को AllowOverride None बदलने संभालने, तो

+0

मेरे apache2.conf में कोई <निर्देशिका ...> नहीं है। जड़ @ कोई भी: के/etc/apache2 एक ls/etc/apache2 # ls apache2.conf conf.d mods-उपलब्ध साइटों सक्षम apache2.conf.dpkg-जिले envvars mods सक्षम conf-उपलब्ध httpd .conf ports.conf conf-enabled मैजिक साइट्स-उपलब्ध रूट @ none:/etc/apache2 # – user3817533

+0

हाँ यह apache2.conf फ़ाइल के अंदर है। लेकिन आपकी समस्या पहले ही हल हो गई है। आपका दिन शुभ हो! – delmadord

+0

मैं बस rewrite_module सक्षम और एक आकर्षण की तरह काम किया! – Memonic

0

फ़ाइल को सहेजने और पुनः आरंभ अपाचे ऐसा न करने पर एक .htaccess फ़ाइल का उपयोग, आप अपने पुनर्निर्देशन के लिए निर्देशिका निर्दिष्ट करने की आवश्यकता:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    <Directory /home/vitela/laravel/public> 
     RewriteBase /public 
     RewriteRule ^(.*)/$ /$1 [L,R=301] 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteRule ^(.*)$ /index.php [L,QSA] 
    </Directory> 
    </IfModule> 
0

MacOS में। .htaccess की मुख्य समस्या काम नहीं कर रही है क्या mod_rewrite.so apache कॉन्फ़िगरेशन की httpd.conf फ़ाइल में सक्षम नहीं है। मैं टिप्पणी हटाएं लाइन द्वारा इस समाधान कर लिया है:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

लाइन httpdf.conf ऊपर से # निकालें। फिर यह काम करेगा। का आनंद लें!

0

AllowOverride NoneAllowOverride All करने और sudo a2enmod rewrite && sudo /etc/init.d/apache2 reload मदद किया था बदल रहा है।

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