2014-12-09 6 views
11

क्या PHP में निर्मित सर्वर .htaccess का उपयोग नहीं करता है? समझ में आता है मुझे लगता है क्योंकि यह अपाचे (?) पर निर्भर नहीं है। वैसे भी सर्वर को इन फ़ाइलों का उपयोग करने के लिए बताना संभव है, क्या यह यूआरएल रीराइट्स को संभाल सकता है? मेरे पास ढांचे में कुछ porjects है जो इन फ़ाइलों पर भरोसा करते हैं।PHP सर्वर में बनाया गया है और .htaccess mod rewrites

APPLICATION_ENV=development php -S localhost:8000 -t public/

+0

'php -S' एपाचे नहीं है, क्यों चाहिए यह किसी भी अपाचे config फ़ाइलों को पढ़ने के लिए? –

+0

आप अपने 'फ्रंट कंट्रोलर' को 'php -S ... सर्वर/index.php' –

+0

द्वारा सर्वर पर सर्वर से कहने के लिए कह सकते हैं, लेकिन .htaccess फ़ाइलों का उपयोग आमतौर पर अनुप्रयोगों में किया जाता है, इसलिए मुझे आश्चर्य हुआ कि क्या सभी PHP सर्वर ने उन्हें संभाला था। मुझे नहीं लगता। एक फ्रंट कंट्रोलर को इंगित करना ठीक है, लेकिन जब मैं वर्तमान में कुछ/न्यूज़/व्यू/205 यूआरएल लिखना चाहता हूं तो मैं नहीं कर सकता। – Martyn

उत्तर

5

यह पीएचपी में निर्मित वेब सर्वर का उपयोग कर .htaccess को संभालने के लिए संभव नहीं है (यह अपाचे पर भरोसा नहीं है, यह PHP के मूल में entierly कार्यान्वित किया जाता है)। हालांकि, आप राउटर स्क्रिप्ट का उपयोग कर सकते हैं (यहां वर्णित: http://php.net/manual/en/features.commandline.webserver.php)।

उदा। php -S localhost -S localhost:8080 router.php

+0

तो आपको .htaccess – unixmiah

+0

का उपयोग करने की आवश्यकता है आप PHP के अंतर्निर्मित सर्वर के साथ .htaccess का उपयोग नहीं कर सकते हैं। यह समर्थित नहीं है। यदि आप .htaccess का उपयोग करना चाहते हैं और अपने वेबसर्वर को कॉन्फ़िगर करने का अन्य तरीका नहीं चाहते हैं, तो आपको या तो PHP में अपाचे या पार्स। Htaccess का उपयोग करना होगा (शायद यह एक कठिन बात होगी) – Agares

+1

आह जो समझ में आता है। हाँ मैं सहमत हूँ। – unixmiah

6

यहां राउटर है जो मैं बिल्टिन PHP वेबसर्वर के लिए उपयोग करता हूं जो फाइल सिस्टम से संपत्तियों की सेवा करता है और अन्यथा index.php फ़ाइल में पुनर्लेखन करता है।

रन का उपयोग:

php -S localhost:8080 router.php 

router.php:

<?php 

chdir(__DIR__); 
$filePath = realpath(ltrim($_SERVER["REQUEST_URI"], '/')); 
if ($filePath && is_dir($filePath)){ 
    // attempt to find an index file 
    foreach (['index.php', 'index.html'] as $indexFile){ 
     if ($filePath = realpath($filePath . DIRECTORY_SEPARATOR . $indexFile)){ 
      break; 
     } 
    } 
} 
if ($filePath && is_file($filePath)) { 
    // 1. check that file is not outside of this directory for security 
    // 2. check for circular reference to router.php 
    // 3. don't serve dotfiles 
    if (strpos($filePath, __DIR__ . DIRECTORY_SEPARATOR) === 0 && 
     $filePath != __DIR__ . DIRECTORY_SEPARATOR . 'router.php' && 
     substr(basename($filePath), 0, 1) != '.' 
    ) { 
     if (strtolower(substr($filePath, -4)) == '.php') { 
      // php file; serve through interpreter 
      include $filePath; 
     } else { 
      // asset file; serve from filesystem 
      return false; 
     } 
    } else { 
     // disallowed file 
     header("HTTP/1.1 404 Not Found"); 
     echo "404 Not Found"; 
    } 
} else { 
    // rewrite to our index file 
    include __DIR__ . DIRECTORY_SEPARATOR . 'index.php'; 
} 
संबंधित मुद्दे