संपादित करें: मुझे लगता है कि यह समस्या अपाचे को ठीक से स्थापित नहीं करने के कारण है, इन दो लिंक ने मेरी मदद की।

समाधान:

http://laravel.io/forum/06-11-2014-not-found-but-route-exists

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts

अंत संपादित करें

मैं Laravel 5.2 क्विकस्टार्ट गाइड का अनुसरण कर रहा हूं। https://laravel.com/docs/5.2/quickstart

मैं ubuntu 14.04.2 चला रहा हूँ

वेबसाइट शुरू में चलती है, लेकिन फिर जब मैं ऐड टास्क बटन पर क्लिक करता हूं तो मैं 404 नॉट फाउंड एरर में चला जाता हूं।

गाइड के अनुसार मैं पूर्ण क्विकस्टार्ट प्रोजेक्ट को सेटअप करने के लिए निम्नलिखित कमांड चलाता हूं।

git clone https://github.com/laravel/quickstart-basic quickstart
cd quickstart
composer install
php artisan migrate

इसके अतिरिक्त मैं निम्नलिखित कमांड चलाता हूं क्योंकि मैं एक ubuntu सर्वर पर हूं:

sudo chown -R www-data.www-data quickstart
sudo chmod -R 755 quickstart
sudo chmod 777 quickstart/storage

मार्ग.php फ़ाइल इस तरह दिखती है:

<?php
use App\Task;
use Illuminate\Http\Request;

Route::group(['middleware' => ['web']], function () {
    //
    Route::get('/', function () {

        $tasks = Task::orderBy('created_at', 'asc')->get();

        return view('tasks', [
            'tasks' => $tasks
        ]);
    });

    Route::post('/task', function (Request $request) {

        $validator = Validator::make($request->all(), [
            'name' => 'required|max:255',
        ]);

        if($validator->fails()) {
 return redirect('/')
                ->withInput()
                ->withErrors($validator);
        }

        $task = new Task;
        $task->name = $request->name;
        $task->save();

        return redirect('/');
    });
        //
    Route::delete('/task/{task}', function (Task $task) {
    $task->delete();

    return redirect('/');

    });

});

मैंने संसाधनों/दृश्य/कार्यों.ब्लेड.php में से कुछ कोड बदलने का प्रयास किया:

 <!-- New Task Form -->
                    <form action="/task" method="POST" class="form-horizontal">

लार्वा परियोजना के वास्तविक सार्वजनिक फ़ोल्डर के स्थान पर:

 <!-- New Task Form -->
                    <form action="/learninglaravel/laraquickstart/quickstart/public/task" method="POST" class="form-horizontal">

तो मेरी समस्या तब होती है जब मैं बटन दबाता हूं मुझे 404 त्रुटि मिलती है

//****** संपादित करें:

मैंने पोस्ट रूट संपादित करने का प्रयास किया है लेकिन इससे समस्या ठीक नहीं होती है।

Route::post('/learninglaravel/laraquickstart/quickstart/public/task', function (Request $request) {

            $validator = Validator::make($request->all(), [
                'name' => 'required|max:255',
            ]);

            if($validator->fails()) {
     return redirect('/')
                    ->withInput()
                    ->withErrors($validator);
            }

            $task = new Task;
            $task->name = $request->name;
            $task->save();

            return redirect('/');
        });

त्रुटि है:

Not Found

The requested URL /learninglaravel/laraquickstart/quickstart/public/task was not found on this server.

के बजाए:

Not Found

The requested URL /task was not found on this server.

मैंने वही किया जो आपने जेम्स को सुझाया था और आप सही थे, यह URL को बदल देता है

/learninglaravel/laraquickstart/quickstart/public/task

लेकिन मुझे अभी भी पृष्ठ की त्रुटि नहीं मिली है। फर्क सिर्फ इतना है कि त्रुटि संदेश को बोले त्रुटि से ऊपर में बदल दिया गया है। (मैंने उसी यूआरएल को प्रतिबिंबित करने के लिए रूट.php फ़ाइल और कार्यों.blade.php दोनों में url को मैन्युअल रूप से बदलने का भी प्रयास किया है। इसलिए उपरोक्त URL मार्ग.php और कार्यों.blade.php दोनों में होगा।

मैं एक उबंटू एडब्ल्यूएस सर्वर पर चल रहा हूं शायद मैंने उस छोर पर गलती की है? मुझे लगता है कि क्विकस्टार्ट ट्यूटोरियल होमस्टेड के लिए लिखा गया था क्योंकि मैं डेटाबेस के साथ समस्याओं में भाग गया था। (मुझे बस मैन्युअल रूप से एक बनाना था। गाइड ने इसे कभी निर्दिष्ट नहीं किया। मुझे लगता है कि यह स्वचालित रूप से डेटाबेस का उपयोग करने के लिए होमस्टेड में पूर्व-कॉन्फ़िगर किया जा सकता है)

चियर्स

2
Mr Gibbous 7 फरवरी 2016, 03:18

3 जवाब

सबसे बढ़िया उत्तर

जब आप अपना प्रपत्र क्रिया पैरामीटर को में बदलते हैं

/learninglaravel/laraquickstart/quickstart/public/task

आप HTTP POST अनुरोध करने जा रहे हैं

{scheme}://{domain}//learninglaravel/laraquickstart/quickstart/public/task

तो लार्वा इस मार्ग की तलाश करने जा रहा है और जाहिर है कि वह इसे नहीं ढूंढ पाएगा।

1
joruro 7 फरवरी 2016, 04:09

त्वरित प्रारंभ की मार्गदर्शिका से, आप url हेल्पर, जो:

दिए गए पथ के लिए पूरी तरह से योग्य URL उत्पन्न करता है।

जैसे आप इसे अपने फॉर्म पर इस तरह इस्तेमाल कर सकते हैं:

<!-- New Task Form -->           
<form action="{{ url('task') }}" method="POST" class="form-horizontal">

यह सुनिश्चित करेगा कि आप हमेशा अपने डोमेन के लिए सही URL पर पोस्ट कर रहे हैं, बिना आपको इसे स्वयं निर्दिष्ट किए बिना।

इसे आज़माएं और देखें कि मेरा क्या मतलब है, लेकिन आपके मामले में यह आपके लिए आपके कार्य मार्ग के लिए एक यूआरएल उत्पन्न करेगा (आपकी टिप्पणी के आधार पर); 52.60.22.45/learninglaravel/laraquickstart/quickstart/public/task

2
James 7 फरवरी 2016, 06:02

बस mod_rewrite इंजन सक्षम करें और यह पूरी तरह से काम करेगा। मैंने समाधान और समाधान खोजने के लिए 2 घंटे से अधिक समय बिताया है। तो अपना समय बर्बाद न करें और कमांड का पालन करके mod_rewrite इंजन को सक्षम करें और पुनः प्रयास करें:

sudo a2enmod rewrite

और अपाचे सर्वर को पुनरारंभ करना न भूलें

sudo /etc/init.d/apache2 restart

या

sudo service apache2 restart
0
Rakesh Mali 6 पद 2016, 13:45