2010-01-07 7 views
10

अभी तक मेरी वेबसाइट में कुछ स्थिर पृष्ठ हैं, जिनमें से एक/पोर्टफोलियो है। अन्य चीजों के अलावा, मेरा htaccess .html एक्सटेंशन छुपाता है। मैं एक पोर्टफोलियो निर्देशिका जोड़ना चाहता हूं, लेकिन मैं अपने मौजूदा पोर्टफोलियो पेज को पोर्टफोलियो निर्देशिका में डिफ़ॉल्ट अनुक्रमणिका फ़ाइल के रूप में स्थानांतरित नहीं करना चाहता हूं। मेरा/पोर्टफोलियो पेज मेरे Google साइटलिंक में से एक है और मुझे डर है कि अगर इसे स्थानांतरित किया गया है या यदि यूआरएल किसी भी समय बदलता है, तो Google इसे एक नया नया पृष्ठ मानेगा।.htaccess, निर्देशिका का उचित पुनर्लेखन और उसी नाम के साथ फ़ाइल

मेरी समस्या एक बार जब मैं/पोर्टफोलियो/निर्देशिका जोड़ता हूं, जब भी मैं मूल/पोर्टफोलियो पेज पर जाने का प्रयास करता हूं, एक पिछला स्लैश स्वचालित रूप से जोड़ा जाता है और यह निर्देशिका से ही लिंक होता है।

मैंने अनगिनत विकल्पों की कोशिश की है, एक/पोर्टफोलियो/से/पोर्टफोलियो का पुनर्लेखन है, हालांकि यह एक अनंत लूप बनाता है। मैंने "डायरेक्टरी स्लैश ऑफ" की भी कोशिश की लेकिन निर्देशिका के अंदर होने के दौरान केवल पिछली स्लैश को हटा दिया, यह मूल/पोर्टफोलियो पेज तक पहुंच वापस नहीं लौटा।

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

एक समान प्रश्न यहां मौजूद है: .htaccess rewriting url to page or directory हालांकि यह अभी भी किसी कारण से मेरे लिए एक अनंत लूप हुआ है, मुझे लगता है कि इसमें छिपे हुए एक्सटेंशन के साथ कुछ करना है।

यहाँ मेरी htaccess-

 
RewriteEngine On 

# HTML to PHP 
RemoveHandler .html .htm 
AddType application/x-httpd-php .htm .html 

# Hide extension 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html 

# Force WWW 
RewriteCond %{HTTP_HOST} ^mydomain\.net 
RewriteRule ^(.*)$ http://www.mydomain.net/$1 [R=301,L] 

# Blog Subdomain 
RewriteCond %{HTTP_HOST} ^blog.mydomain.net$ 
RewriteRule ^(.*)$ http://www.mydomain.net/blog/$1 [R=301,L] 

मैं जानता हूँ कि यह एक स्थैतिक पृष्ठ के रूप में एक ही नाम के साथ एक निर्देशिका होने एक बहुत अच्छा विचार नहीं है, लेकिन मैं वास्तव में नहीं बल्कि मौजूदा पेज में परिवर्तन और गूगल साइटलिंक खोना नहीं होगा, इसलिए इसे संभालने का एक साफ और उचित तरीका एक मदद होगी।

उत्तर

13

यहां दो चीज़ें "गलत" जा रही हैं, और इसे ठीक करने के दो तरीके हैं।

पहला यह है कि अपाचे "आंकड़े बाहर" है कि पुनर्लेखन शर्तों को लागू करने से पहले "पोर्टफोलियो" के नाम से एक निर्देशिका है। इसका मतलब है कि पुनर्लेखन की स्थिति "पोर्टफोलियो" के बजाय "पोर्टफोलियो /" प्राप्त कर रही है।

दूसरा, नियम विशेष रूप से फिर से लिखने कि आप अगर उस नाम से एक निर्देशिका वास्तव में वहाँ है बनाना चाहते परहेज है

समाधान 1 "-d!": मैन्युअल रूप से पुन: राउट पोर्टफोलियो निर्देशिका के लिए अनुरोध स्लैश हटा दें।

# Manually re-route portfolio/ requests to portfolio 
RewriteCond %{REQUEST_FILENAME} portfolio/$ 
RewriteRule ^(.*)/$ $1 

# Hide extension 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html 

"! -d" स्थिति को हटाने पर ध्यान दें।

इस के नकारात्मक पक्ष यह है कि आप फिर से लिखने के नियम में सीधे हार्ड-कोड के लिए कर रहे हैं "पोर्टफोलियो" बढ़त के मामले में, और अभी भी ब्राउज़र में परिणाम होगा पहले/पोर्टफोलियो के लिए पुनः निर्देशित किया जा

समाधान 2: सेट बंद DirectorySlash और हटाने निर्देशिका परीक्षण

# Disable Automatic Directory detection 
DirectorySlash Off 

# Hide extension 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html 

स्थापना DirectorySlash बंद इस मुद्दे सबसे अच्छा ठीक है, लेकिन आपकी साइट के अन्य भागों टूट सकता है जहां आप वास्तव में ऑटो DirectorySlash चाहते मौजूद है। शुभकामनाएं, और मुझे आशा है कि इससे मदद मिलती है।

नोट 2 परीक्षण करते समय नोट करें, आपका ब्राउज़र "पोर्टफोलियो" के "पोर्टफोलियो" के रीडायरेक्ट को याद रख सकता है और सर्वर से अनुरोध भेजने से पहले रीडायरेक्ट कर सकता है। सर्वोत्तम परिणामों के लिए कैश-स्पष्ट, स्वच्छ वातावरण में परीक्षण करना सुनिश्चित करें।

+0

हां पता है, मैंने पहले ही यह कोशिश की है। मैंने लाइन को हटाकर और इसे हटाने से भी कोशिश की! और इसके परिणामस्वरूप कोई बदलाव नहीं हुआ। मुझे पता चलेगा कि मैं xampp का उपयोग करते समय इसका परीक्षण कर रहा हूं। अब तक, केवल एक चीज जो मैंने देखी थी, मुझे कैश साफ़ करने और कुछ बदलावों के प्रभाव के लिए अपने ब्राउज़र को पुनरारंभ करने की आवश्यकता थी, लेकिन मुझे यकीन नहीं है कि इससे समाधान न होने के कारण समाधान होंगे। – PaulC

+0

ठीक है, मुझे लगता है कि मेरी स्थिति के लिए कोई वास्तविक समाधान नहीं है। जब तक मैं अपनी नई साइट अपलोड करने के लिए जाता हूं, तब तक मैं इस समस्या का सामना नहीं कर रहा हूं। उम्मीद है कि, मैं तब तक कुछ समझता हूं। यद्यपि कि आपकी इस सहायता के लिए धन्यवाद। – PaulC

+0

अपने पर्यावरण में कुछ परीक्षण करने के बाद, मैंने यह दिखाने के लिए अपना जवाब संपादित किया कि आपके पास कौन से विकल्प हैं। –

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