2012-07-28 11 views
19

के बिना काम नहीं करते हैं मेरा Magento उबंटू लिनक्स/var/www/Magento के तहत स्थापित है। यह प्रश्न संग्रह में कुछ प्रश्नों की तरह दिखता है लेकिन यह कुछ हद तक अलग है। जब मैंने पर Magento स्थापित किया, उबंटू लिनक्स मैंने अपाचे mod_rewrite URL को फिर से लिखने में सक्षम किया।होम पेज के अलावा Magento यूआरएल index.php

जब मैं http: // localhost/magento पर जाता हूं तो मेरा सर्वर URL को http: // localhost/magento/ के रूप में पुनः लिखता है और पृष्ठ प्रदर्शित करता है। मैं नेविगेशन बार में लिंक में से किसी एक पर क्लिक करता हूं, मान लीजिए कि यह एनएवी-बार आइटम "foo" है।

: http: फिर Magento के लिए मुझे ले जाता है // स्थानीय होस्ट/Magento/foo.html

जो एक "नहीं मिला" अपाचे पेज प्रदर्शित करता है।

मैं यूआरएल ----- करने के लिए>

http बदलना होगा: // स्थानीय होस्ट/Magento/index.php/foo.html

आदेश पृष्ठ प्रदर्शित करने के लिए।

ऐसा लगता है कि मेरे mod_rewrite कार्यप्रणाली में कुछ ख़राब है।

धन्यवाद,

जॉन गोचे

विन्यास: सिस्टम -> विन्यास -> (सामान्य ->) वेब:

उपयोग वेब सर्वर पुनर्लेखन: हाँ

आधार URL: http: // localhost/magento

यदि मैं "उपयोगकर्ता वेब सर्वर रिवाइट्स:" सेट करता हूं, तो मेरे मुख्य पृष्ठ से लिंक ठीक काम करता है, लेकिन पृष्ठ http: // localhost/magento/index.php/foo.html देखें जो सही पृष्ठ प्रदर्शित करता है, लेकिन जबकि वेबसाइट काम करता है मुझे URL पसंद नहीं है। I यह index.php बिट के बिना http: // localhost/magento/foo.html होना चाहेगा, क्योंकि यह शायद अधिक एसईओ-अनुकूल होगा।

धन्यवाद,

जॉन गोचे


अद्यतन: मैं अपने कृत्रिम 127.0.1.1 आईपी पते जो ubuntu/etc/hosts में रखा था uncommenting और वहाँ मेरा असली आईपी रखने की कोशिश की है लेकिन कोई भाग्य नहीं। मुझे अभी भी वही समस्या है। और यूआरएल के अंदर यूआरएल http: // localhost/etc पर लिखा गया है ... जब भी मैं टाइप 1 9 2.168.3.31, हिमस्खलन, या avalanche.com इसके अंदर। मैं अभी भी ऊपर वर्णित समस्या को हल करने का तरीका जानने का प्रयास कर रहा हूं क्योंकि ऐसा नहीं हुआ है।

127.0.0.1  localhost 
#127.0.1.1  avalanche 

192.168.4.35 avalanche avalanche.com 

जब मैं अपाचे पुनः आरंभ मैं:

# service apache2 restart 
* Restarting web server apache2            apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.4.35 for ServerName 
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.4.35 for ServerName 

सुनिश्चित नहीं हैं कि मूल मुद्दे को ठीक करने के लिए। मैं स्थानीय सर्वर पर परीक्षण कर रहा हूं।


मैंने इस समाधान का भी प्रयास किया है और फिर apache2 को पुनरारंभ किया है, लेकिन कोई भाग्य नहीं!

How to remove index.php from URLs?

इसलिए रखकर:

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

काम नहीं करता है, यहां तक ​​कि साथ RewriteBase /, यह काम नहीं करता।


ठीक है, आखिर में मैंने probkem को हल करने में कामयाब रहे। फ़ाइल/etc/apache2/साइटों सक्षम/000-डिफ़ॉल्ट निम्नलिखित निर्देश सभी निर्देशिकाओं इस फ़ाइल में परिभाषित के लिए निर्धारित किया है:,

AllowOverride None 

उदाहरण के लिए/var/www जो डिफ़ॉल्ट दस्तावेज़ है के लिए जड़ Ubuntu 12.04 LTS Linux सिस्टम पर इस फाइल सेट

<Directory /var/www/> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride None 
      Order allow,deny 
      allow from all 
    </Directory> 

जो जहाँ तक मैं समझता हूँ कि इसका मतलब है कि .htaccess फ़ाइलों में इस निर्देशिका और उसकी उप के सभी पार्स नहीं किया जाएगा पाया शामिल हैं। समस्या को ठीक करने के लिए यह निर्धारित करने के लिए पर्याप्त है:

AllowOverride All 

जिसका अर्थ है आप सर्वर विन्यास निर्देशों /etc/apache2/apache2.conf में पाया ओवरराइड करने के लिए सक्षम हो जाएगा (या /etc/apache2/httpd.conf जो उसमें शामिल है)।

डिफ़ॉल्ट कारणों से AllowOverride को किसी भी पर सेट नहीं किया गया है, तो यह सर्वर को धीमा कर सकता है और दूसरा सुरक्षा कारणों से है। यह निर्देश टैग के अंदर सेट किया जाना चाहिए और बाद वाले लोग पूर्व को ओवरराइड कर सकते हैं। एक और कारण यह डिफ़ॉल्ट रूप से सेट नहीं है, यह साइट पर पूरे समय साइट पर को पार्स करने के लिए है। लोड होने से सिस्टम धीमा हो सकता है और इस प्रकार रखता है। Htaccess सामान/etc/apache2 में /httpd.conf जब संभव है तो यह अनुशंसित है क्योंकि यह गति में वृद्धि कर सकता है।

तो जगह

<Directory /var/www/> 
      Options Indexes FollowSymLinks MultiViews 
      #AllowOverride None 
      AllowOverride All 
      Order allow,deny 
      allow from all 
    </Directory> 

अंदर/etc/apache2/साइटों सक्षम/000-डिफ़ॉल्ट

और चलाएँ: सेवा apache2 पुनः आरंभ

समाधान है।

+0

मुझे लगता है मैं मिल सकता है समाधान के सभी की कोशिश की है और वे बिल्कुल कोई फर्क, भले ही मैं व्यवस्थापक पैनल में mod_rewrite सक्षम, कैश मिटाएं अपाचे पुनरारंभ करें, और कोड जगह /var/www/mymagento/.htaccess में (और http: // myip/mymagento/admin पर जाएं जो फ़ाइल नहीं मिला है जबकि http: // myip/mymagento/index.php/admin works)। – user1527429

+2

यदि आप समस्या को हल करने में कामयाब रहे हैं, तो कृपया इसे अपने प्रश्न में शामिल न करें। इसके बजाय इसे एक अलग उत्तर बनाओ। आपको ऐसा करने की अनुमति है और प्रोत्साहित किया जाता है। – Bart

उत्तर

17

तुम कोशिश किया

<VirtualHost *:80> 
... 
<Directory /var/www/magento/> 
    AllowOverride All 
</Directory> 
</VirtualHost> 
+0

धन्यवाद, यह वास्तव में सहायक था, और वास्तव में मांग समाधान है। – user1527429

+0

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

+0

@ SylvainRayé इसके कामकाजी जुर्माना :-) – Butterfly

4

आप अपने Magento जड़ में the appropriate .htaccess file है? साथ ही, आप localhost के साथ समस्याओं में भाग ले सकते हैं।इसे 127.0.0.1 का उपयोग करने या अपनी मेजबान फ़ाइल में देव डोमेन मैप करने की सलाह दी जाती है।

RewriteBase /magento/ 

और नहीं RewriteBase/mymagento/क्योंकि आपके यूआरएल है http: // localhost/Magento/

अपने अपाचे वर्चुअल होस्ट करता है config अधिलेखित करने के लिए अनुमति देते हैं, जैसे

+0

हैलो, हाँ मेरे पास यह फ़ाइल है। जब मैंने Magento स्रोत को अनजिप किया तो यह इंस्टॉल हो गया। हालांकि मुझे अभी भी समस्या है। क्या मुझे इस फ़ाइल को समायोजित करने की ज़रूरत है और यदि ऐसा है तो कैसे? शायद मुझे रिवाइटरूल को बदलने की जरूरत है। * Index.php [एल] या कुछ? – user1527429

+0

मैंने अपनी/etc/hosts फ़ाइल को संशोधित करने का प्रयास किया है, लेकिन अभी भी समस्याएं हैं। – user1527429

2

Magento विन्यास (के माध्यम से सिस्टम> विन्यास Magento व्यवस्थापक पैनल में पहुँचा) वहाँ कुछ प्रासंगिक सेटिंग कि निर्धारित अंतिम खोज इंजन दोस्ताना यूआरएल की तरह लग रहा हैं के भीतर।

Web > Search Engine Optimization > Use Web Server Rewrites 

एक सेटिंग जिसे हमेशा चालू किया जाना चाहिए। यदि "/index.php/" URL में जोड़ा नहीं जाएगा जो अनावश्यक है और बदसूरत दिखता है। इस विकल्प को सक्षम करने के लिए, आपको अपने होस्टिंग पर्यावरण में अपाचे mod_rewrite सक्षम करने की भी आवश्यकता है।

Catalog > Search Engine Optimizations > Product URL Suffix 

डिफ़ॉल्ट मान यहाँ ".html" जो प्रत्येक उत्पाद URL में संलग्न किया जाएगा। कुछ एसईओ विशेषज्ञों का दावा है कि बेहतर रेटिंग के लिए इसकी आवश्यकता है, अन्य एसईओ निर्यात कहते हैं कि यह नहीं है। जूमला के साथ हमारे मगे ब्रिज एकीकरण के लिए! इस सेटिंग को खाली होना चाहिए।

Catalog > Search Engine Optimizations > Category URL Suffix 

ऊपर जैसा ही है, लेकिन अब श्रेणियां।

Catalog > Search Engine Optimizations > Use categories path for product URLs 

इस विकल्प को सक्षम करने के साथ, उत्पाद यूआरएल में श्रेणी यूआरएल कुंजी भी शामिल होगी। हालांकि यह तर्क दिया जा सकता है कि यह डुप्लिकेट सामग्री का कारण बनता है, उत्पाद पृष्ठों को इससे भी फायदा हो सकता है क्योंकि वे एक बड़ी संरचना का हिस्सा बन जाते हैं।

Catalog > Search Engine Optimizations > Use Canonical Link Meta Tag For Products 

आप डुप्लिकेट सामग्री (जो के रूप में बुरा के रूप में कुछ लोगों को आपको बता देंगे नहीं है) के बारे में वास्तव में चिंतित हैं, तो आप एक बार में अग्रणी है डुप्लिकेट सामग्री विहित टैग जो जो पेज खोज इंजन को बताता सक्षम कर सकते हैं पाया गया है ।

Catalog > Search Engine Optimizations > Use Canonical Link Meta Tag For Categories 

ऊपर जैसा ही है, लेकिन श्रेणियों के लिए।

मामले की आगे http://www.yireo.com/tutorials/magento/magento-administration/664-fixing-url-rewrites-with-magento

+0

इस जानकारी के लिए धन्यवाद, लेकिन मुझे अभी भी एक ही समस्या है। वेब> सर्च इंजन ऑप्टिमाइज़ेशन> वेब सर्वर रिवाइट्स का उपयोग ग्लोबल लेवल पर हां पर सेट है, और मेरे पास # a2enmod रीराइट है जो कहता है कि मॉड्यूल पुनः लिखने से पहले ही सक्षम है। तो समस्या कहां है? मैं यूआरएल में /index.php/ से छुटकारा पाना चाहता हूं! – user1527429

+1

लगता है जैसे आपको अपाचे वेब सर्वर प्रशासन से परिचित होने की आवश्यकता है ताकि आप समस्या निवारण में मदद कर सकें कि mod_rewrite आपके सर्वर पर क्यों काम नहीं कर रहा है। यह वास्तव में ** सर्वर वेब सर्वर रिवाइट्स का उपयोग करने के रूप में सरल है ** एक बार mod_rewrite ठीक से सेट हो जाने के बाद (फ्लश कैश और रीइन्डेक्स यूआरएल सेटिंग बदलने और सहेजने के बाद इंडेक्स को रिवाइट करें)। अपने Magento रूट में।htaccess और सर्वर कॉन्फ़िगरेशन, आपको यह सुनिश्चित करने की आवश्यकता है कि निम्नलिखित उचित स्थानों पर सेट हैं: 'पुनर्लेखन ऑनलाइन', 'ऑर्डर ओवरराइड ऑल', 'विकल्प + फॉलोसिमलिंक्स' और 'रीवाइटबेस' उचित निर्देशिका पर सेट है। –

+0

जैसे फिएस्को लैब्स ने नोट किया है कि अब आपको यह सत्यापित करना होगा कि mod_rewrite ठीक से कॉन्फ़िगर किया गया है और .htaccess –

1

जब स्थानीय होस्ट में मेरी लाइव साइट स्थानांतरित मैं एक ही समस्या थी पर पढ़ने। अंत में मैंने इसे हल किया।

मेरे पास विंडोज ओएस है। इसलिए मैंने अपने लोकहोस्ट के लिए डब्ल्यूएएमपी स्टैक का इस्तेमाल किया। मैंने .htaccess फ़ाइल को बदलकर, मेरे स्थानीयहोस्ट में सभी यूआरएल और इसकी सामग्री को पुनः प्राप्त करने के लिए काफी समय बिताया है, डीबी में core_config_data तालिका को संशोधित कर रहा है लेकिन सबकुछ गलत हो गया है।

अंततः मुझे अपाचे सर्वर में rewrite_module को सक्षम करने के लिए एक सुराग मिला। 1. इसे सक्षम करने के लिए ट्रे बार में Wamp आइकन पर क्लिक करें (WAMP-> अपाचे-> अपाचे मॉड्यूल-> और rewrite_module का चयन करें)। 2. वैंप सर्वर को पुनरारंभ करें। 3. स्पष्ट कैश (वैकल्पिक मुझे लगता है) - var/cache फ़ोल्डर में सभी फ़ाइलों को हटाएं

सुनिश्चित करें कि आपके रूट फ़ोल्डर में .htaccess फ़ाइल है (localhost/magento/.htaccess) मान लें। यदि आपके पास नहीं है तो आपको परिणाम नहीं मिलेगा।

यह बात करता है।

मुझे आशा है कि अब आप घर के अलावा अन्य सभी पृष्ठों और यूआरएल को पुनः प्राप्त कर पाएंगे और आपको 404 त्रुटि पृष्ठ नहीं मिलेगा।

1

यह mod_rewrite समस्या है। मैं उबंटू चला रहा हूं और एक स्टोर माइग्रेशन के लिए अपाचे और Magento के सेटअप के दौरान एक ही समस्या थी।

बदलें /etc/apache2/sites-available/000-default.conf को रोकने के लिए

<VirtualHost ...> 
... 
<Directory /var/www> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    allow from all 
</Directory> 

</VirtualHost> 

इस प्रकार var/www वेबसर्वर पर के लिए पुनर्लेखन की इजाजत दी।

अपाचे प्रक्रिया को मैगेंटोस से पुनः लिखने के नियम बनाने के लिए। htaccess फ़ाइल (s),
के माध्यम से

sudo /etc/init.d/apache2 force-reload 
//(not service apache2 restart) 

पुनर्लेखन मॉड्यूल को सक्षम करने के माध्यम से

sudo a2enmod rewrite 

और अपाचे को पुन: प्रारंभ मेरे लिए पूरे मुद्दे को हल किया।

कैसे सही तरीके से चीजों को सेट अप करने के लिए के एक संपूर्ण विवरण के लिए http://wiki.ubuntuusers.de/Apache/mod_rewrite और
http://wiki.ubuntuusers.de/Apache देखें।

3

वैंप के लिए अपाचे रीराइट मॉड्यूल को सक्षम करना मेरे लिए काम करता है।

enter image description here

+0

'.htaccess' से 'डेटाबेस tweaks' तक लगभग सभी समाधान का प्रयास किया। यह मेरे लिए काम किया। धन्यवाद। +1 – CodeRomeos

3
Go to admin url of your site. 
Suppose,http://example.com/index.php/admin/ 

Go to 'System' menu from navigation and click on 'Configuration'. 
Under the 'General' tab in the left, click on 'Web'. 
Open the 'Search Engines Optimization' section by clicking on it. 
Then set 'Use Web Server Rewrites' value to 'No' 
+0

क्या कोई प्रारूपण या अतिरिक्त संदर्भ है जिसे आप इस उत्तर में अधिक व्यापक बनाने के लिए जोड़ सकते हैं? – theMayer

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