2012-05-05 8 views
7

मैं www.example.com/about.php सिर्फ www.example.com/about.htaccess फाइल

मैं .htaccess फ़ाइल बनाया है और की जड़ में रखा होना चाहता हूँ के साथ फाइल एक्सटेंशन .php निकाला जा रहा है मेरा सर्वर मैं लिनक्स साझा होस्टिंग का उपयोग कर रहा हूँ। PHP संस्करण 5.2

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

ऐसा लगता है कि यह कोड ठीक से काम करना चाहिए, लेकिन किसी कारण से ऐसा नहीं होता है। जब मैं .php एक्सटेंशन के बिना किसी पृष्ठ पर नेविगेट करने का प्रयास करता हूं तो मुझे 404 त्रुटि मिलती है।

यहाँ भी मेरी मार्कअप है:

<nav> 
     <div class="container"> 
      <ul> 
       <li><a href="index.php" <?php if (strpos($_SERVER['PHP_SELF'], 'index.php')) echo 'class="current-nav"';?>>home</a></li> 
       <li><a href="about.php">about</a></li> 
       <li><a href="services">our services</a></li> 
       <li><a href="portfolio" <?php if (strpos($_SERVER['PHP_SELF'], 'portfolio.php')) echo 'class="current-nav"';?>>portfolio</a></li> 
       <li><a href="testimonials" <?php if (strpos($_SERVER['PHP_SELF'], 'testimonials.php')) echo 'class="current-nav"';?>>testimonials</a></li> 
       <!--<li><a href="#">client area</a></li>--> 
       <li><a href="contact" <?php if (strpos($_SERVER['PHP_SELF'], 'contact.php')) echo 'class="current-nav"';?>>Contact</a></li> 
       <li><a href="order" <?php if (strpos($_SERVER['PHP_SELF'], 'order.php')) echo 'class="current-nav"';?>><strong>Free Quote</strong></a></li> 
      </ul> 
     </div> 
    </nav><!--/navigation--> 

आप देख सकते हैं मैं कड़ी में php एक्सटेंशन का उपयोग कर की कोशिश की है और यह भी बिना कोशिश की। PHP एक्सटेंशन के साथ लिंक पृष्ठ पर जाते हैं, लेकिन एक्सटेंशन को हटाएं नहीं।

मैंने यह देखने के लिए एक परीक्षण किया कि मॉड्यूल_rewrite कुछ कचरा डालने और 500 त्रुटि लौटकर सक्षम किया गया था या नहीं।

+0

अगर अपने होस्टिंग साझा किया जाता है, की तुलना में इस लेख की कोशिश यह किया जाना। http://www.kvcodes.com/2016/02/godaddy-remove-php-extension/ – Kvvaradha

+0

मैंने इस सवाल को सामान्यीकृत किया, क्योंकि यह गोडाडी या PHP के लिए विशिष्ट नहीं प्रतीत होता है। इनपुट के लिए – Braiam

उत्तर

0

आपका पुनर्लेखन नियम सही नहीं है, यह गलत तरीका है। इसके बजाय इसे आजमाएं:

RewriteRule ^(.*).php$ /$1 [L,R=301] 
+0

धन्यवाद लेकिन कोई भाग्य नहीं है। अभी भी 404 त्रुटि प्राप्त हो रही है। –

7

तो Google के साथ लंबे समय के बाद मैंने अंततः इसे बाहर निकाला। यह गोडाडी के साथ काम करता है साझा होस्टिंग। यह निकालता है php फ़ाइल एक्सटेंशन तो http://yoursite.com/about.php

+2

यह केवल एक है जो मेरे लिए काम करता है! धन्यवाद! – FoamyMedia

+0

लेकिन यह सही समाधान नहीं है क्योंकि यह किसी भी '/ not-found' फ़ाइल को'/not-found.php' पर फिर से लिखता है, भले ही वह php फ़ाइल सिस्टम में मौजूद न हो। – anubhava

35

उपयोग छिपने के लिए इस कोड को/हटाने के .php विस्तार (सर्वर पर अपलोड करने से पहले टिप्पणियों को निकाल) http://yoursite.com/about

Options -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f #If requested is not a filename... 
RewriteCond %{REQUEST_FILENAME} !-d #And not a directory 
RewriteRule ^(.*)$ $1.php [L]   # perform this redirect 

हो जाता है:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

## hide .php extension 
# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L,NC] 

## To internally redirect /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_URI}.php [L] 
+6

यह एकमात्र स्निपेट है जिसने मेरे लिए काम किया है। धन्यवाद। – Chris

+2

यह विकल्प केवल एकमात्र है जो मेरे लिए गोडाडी के साथ भी काम करता है। धन्यवाद @anubhava – Ryan

+1

अन्य समाधानों ने पृष्ठ को विस्तार के साथ या बिना प्रस्तुत करने की अनुमति दी। गोडाडी के लिए, यह एकमात्र समाधान है जो .php एक्सटेंशन को हटा देगा, इससे कोई फर्क नहीं पड़ता कि लिंक क्या है। धन्यवाद। –

4

मैं इस समस्या थी भी, लेकिन मैंने पाया कि यह GoDaddy। htaccess समस्या को ठीक करने लग रहा था।

# Fix Rewrite 
Options -Multiviews 

# Mod Rewrite 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 
+0

शानदार @ जॉन स्मिथ, यह साइट 5 होस्टिंग के लिए भी काम करता है। – AdamJones

+0

लेकिन मैं गोडाडी उपयोगकर्ता हूं, मेरा असीमित होस्टिंग है, और यह यहां काम नहीं कर रहा है। – Kvvaradha

1

सब कुछ ऊपर चिपकाया गया मेरी .htaccess फ़ाइल में मेरे लिए काम किया ...

## 301 Redirects 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^(.*)\.asp$ $1? [R=301,NE,NC,L]