2014-10-21 14 views
5

मैं उम्र की पुरानी समस्या से जूझ रहा हूं। मुझे कुछ सुंदर एसईओ और एक चमकदार समस्या के साथ एक साइट विरासत में मिली। पूरी साइट/साइट/उपनिर्देशिका पर होस्ट की जाती है। मैंने फैसला किया है कि मुझे रूट पर साइट लोड करने की आवश्यकता है। (-, कि एक कड़ी के रूप में गिना अगर यह स्पष्ट नहीं है कि मैं यह साइट/index.php की जड़ होने के लिए मतलब <।)उन्नत 301 साइट रूट पर एक पूरी साइट के लिए पुनर्निर्देशित?

हम जूमला का उपयोग तो http://example.org/site/index.php की तरह कुछ बजाय /index.php पर रीडायरेक्ट करेगा हमारे बैकएंड और इस बिंदु पर साइट पर सैकड़ों पेज हैं। मैंने उन रीडायरेक्ट्स को प्राप्त करने में संघर्ष किया है जो मैंने देखा है जो मैं उन्हें करना चाहता हूं। असल में, हमारे संरक्षक /साइट/ के साथ पुराने संरक्षक से किसी भी पृष्ठ पर जाते हैं, इसे उसी लिंक पर रीडायरेक्ट किया जाना चाहिए, लेकिन स्टार के बिना।

मैं बस/साइट से पृष्ठ लोड करने के लिए खुला हूं और इसे रूट से दिखाना चाहता हूं। यह मेरी समझ है कि यह कुछ प्रगति के साथ किया जा सकता है mod-rewrite (http://kb.mediatemple.net/questions/85/Using+.htaccess+rewrite+rules#gs?) लेकिन मुझे अभी तक कोई सफलता नहीं मिली है। मैं एक बीटा साइट चलाता हूं जो एक सबडोमेन में मूल साइट की नकल करता है जिसे मैं पहले ही/साइट/से/से स्थानांतरित कर चुका हूं/इसलिए मैं बहुत सारी .htaccess कॉन्फ़िगरेशन का परीक्षण कर सकता हूं।

किसी भी मदद की सराहना की जाती है ... धन्यवाद!

+0

मैं इस है कि चाल करने के लिए लगता है ... पाया RewriteCond% {HTTP_HOST} www.beta.example.org $ [एनसी] RewriteRule^$ http! (*।): // बीटा। example.org/$1 [आर = 301, एनसी, एल] क्या किसी को पता है कि यह कोड जूमला यूआरएल रीराइटिंग के साथ भी काम करेगा या नहीं? तो यह पृष्ठ से /index.php/ को भी हटा सकता है? साथ ही, मुझे यकीन नहीं है कि यह कोड कैसे काम करता है, लेकिन ऐसा लगता है कि मुझे ऐसा करने की ज़रूरत है। – Daystar1124

उत्तर

1

ऐसा लगता है कि मैं काम कर रहा हूं। असल में, इस निर्देशिका में उस निर्देशिका में डाल दिया जाता है जिसे आप रीडायरेक्ट करना चाहते हैं, मेरे मामले में, वह रूट/साइट/था।


पर

RewriteCond% RewriteEngine {HTTP_HOST}!^Www.beta.example.org $ [एनसी]

RewriteRule^(। *) $ http://beta.example.org/ $ 1 [आर = 301, nc , एल]


मुझे लगता है कि पहला नियम www को अनदेखा करता है? मुझे इसके आसपास काम करना अच्छा लगेगा, लेकिन मुझे यकीन नहीं है कि यह वैसे भी क्यों बनाया गया होगा। यह उस यूआरएल को फिर से लिख देगा जो उस .htaccess फ़ाइल (आपके उपनिर्देशिका के अंदर) तक पहुंचता है और आपको उपनिर्देशिका सूची के बिना उसी यूआरएल पर भेजता है। यह वास्तव में index.php पुन: लिखने के उपकरण के साथ काम नहीं करता है, लेकिन यह ठीक है क्योंकि यह अभी भी सही पृष्ठ तक पहुंचता है।

यदि किसी के पास जूमला के साथ उपयोग के लिए मेरे लिए बेहतर विकल्प है तो मुझे यह सुनकर खुशी होगी। लेकिन, मैं यह सोचता हूं कि मैं अभी इसके साथ जाऊंगा क्योंकि यह मुझे महान परिणाम दे रहा है।

+0

पहला व्यक्ति www को अनदेखा नहीं करता है; 'रिवाइटकंड' [कहता है] (http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond) "अरे, अगर यह मेल खाता है, तो आपको ऐसा करने की आवश्यकता होगी"। "Somethinig" निश्चित रूप से रिवाइटरूल है। आपका उत्तर आपके प्रश्न के आधार पर काफी गलत लगता है। यदि आप इसे अस्वीकार्य करते हैं तो मैं एक बेहतर नियम दूंगा। – tedder42

+1

[यह उत्तर] (http://stackoverflow.com/a/18468916/1470907) आपके प्रश्न के लिए अधिक उपयुक्त लगता है। आपके उत्तर में नियम प्रभावी रूप से कहता है: 'यदि डोमेन' www 'से शुरू नहीं होता है, तो' www 'के बिना किसी संस्करण पर रीडायरेक्ट करें। यह आमतौर पर रीडायरेक्ट लूप का कारण बनता है, लेकिन यह उस स्थान पर रीडायरेक्ट करके यहां से बचा जाता है इस नियम से प्रभावित नहीं है। आप नियम के इरादे को स्पष्ट करने के लिए 'रीवाइटकॉन्ड' लाइन को हटा सकते हैं और नियम में एक पूर्ण यूआरएल के बजाय पथ का उपयोग कर सकते हैं। – Stecman

+0

इसे समझाने के लिए धन्यवाद। मैंने अस्वीकार कर दिया और लोगों को नीचे जवाब दिया क्योंकि वह एक शानदार काम करता है। क्या कोई बेहतर तरीका है? अगर कोई नीचे @chesterbr पर सुधार करता है तो मैं खुशी से सबसे अच्छा जवाब बदलूंगा। मुझे लगता है कि उसका जवाब मौजूदा एसईओ के साथ भी सबसे अच्छा काम करेगा। मैंने स्वीकार किया कि मुझे केवल उत्तर के रूप में क्या मिला क्योंकि ऐसा लगता है कि यह वही कर रहा था जो मैं चाहता था कि वह ऐसा करे। – Daystar1124

0

यदि आपके सर्वर apache2 है, तुम वहाँ कॉन्फ़िगर कर सकते हैं

<VirtualHost *:80> 
ServerName sitio.com 
ServerAlias www.sitio.com 
DocumentRoot /home/user/public_html/sitio/ 
... 
</VirtualHost> 

आप इस बदलाव के लिए अनुमति की आवश्यकता

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