2012-07-11 12 views
13

मैं का उपयोग कर एक Drupal 7 साइट विकसित करने के लिए देख रहा हूँ के साथ Drupal 7 सेवित पीएचपी के अंतर्निहित सर्वर। मैंने साफ यूआरएल के बिना सफलतापूर्वक ड्रूपल चलाया है (उदा। index.php? Q =/about/) लेकिन यूआरएल साफ़ करें (उदा। /लगभग/) आम तौर पर mod_rewrite या इसके समकक्ष पर भरोसा करते हैं। डॉक्स मैं देख रहा हूँ तुम इतनी तरह एक रूटर फ़ाइल के साथ PHP सर्वर चला सकते हैं में:निर्मित पीएचपी 5.4 सर्वर

php -S localhost:8000 routing.php 

क्या मैं routing.php में डाल mod_rewrite अनुकरण करना चाहिए?

+0

एक दिलचस्प सवाल के लिए +1। लेकिन चूंकि यह साइट की एक देव प्रति है, क्या आपको वास्तव में स्वच्छ यूआरएल की आवश्यकता है? (मुझे लगता है कि यह साइट की एक देव प्रति है .... आपको लाइव सिस्टम के लिए PHP के अंतर्निर्मित सर्वर का उपयोग नहीं करना चाहिए! - http://php.net/manual/en/features.commandline देखें .webserver.php) – SDC

+0

हाँ, केवल देव के लिए। मैं Nginx और PHP-FPM के साथ तैनाती करता हूं। मैं हर समय एक वर्डप्रेस साइट भी करता हूं और फिर भी यही समस्या होगी। –

+1

अपनी dev साइट पर nginx और php-fpm को सेट करने में क्या गड़बड़ है? इसमें लगभग पांच मिनट लग सकते हैं। –

उत्तर

7

कार्य अपने router.php फ़ाइल के लिए PHP में Drupal की .htaccess एन्कोड करने के लिए मूल रूप से है।

<?php 

if (preg_match("/\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)/", $_SERVER["REQUEST_URI"])) { 
    print "Error\n"; // File type is not allowed 
} else 
if (preg_match("/(^|\/)\./", $_SERVER["REQUEST_URI"])) { 
    return false; // Serve the request as-is 
} else 
if (file_exists($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SCRIPT_NAME"])) { 
    return false; 
} else { 
    // Feed everything else to Drupal via the "q" GET variable. 
    $_GET["q"]=$_SERVER["REQUEST_URI"]; 
    include("index.php"); 
} 

यह विचार किया जाना चाहिए अल्फा गुणवत्ता:

यहाँ एक शुरुआत है। यह ड्रूपल 7.14 की .htaccess फ़ाइल के माध्यम से 3 मिनट की पैदल दूरी का प्रतिनिधित्व करता है, जो 10 सेकंड से अधिक विचारों की आवश्यकता वाले किसी भी चीज़ को छोड़ देता है। :)

हालाँकि इस बात पर मुझे स्टाइलशीट साथ, Drupal की स्क्रिप्ट स्थापित शुरू करने के लिए अनुमति देता है, जे एस और छवियों लोड अपेक्षा के अनुरूप है, और स्वच्छ URL का उपयोग Drupal के पृष्ठों मारा। ध्यान दें कि के इस माहौल में Drupal स्थापित करते हैं, मैं a patch की जरूरत है कि Drupal का हिस्सा नहीं बन सकते हैं 7.

+0

यह बहुत अच्छा लग रहा है। आपको ड्रूपल में शामिल करने के लिए एक पैच जमा करना चाहिए। –

+0

सामान्य अनुरोधों पर SCRIPT_NAME index.php है जिसका अर्थ है कि अंतिम और कथन कभी निष्पादित नहीं किया जाएगा। –

+0

@ जेसन क्रिस्टा - हाँ। अगर हम 'index.php? q = admin' के लिए अनुरोध संसाधित कर रहे हैं, तो हम शायद आगे बढ़ना नहीं चाहते हैं। क्या मैं कुछ नहीं देख रहा हूँ? – ghoti

3

मैं एक समाधान के लिए अपने आप को देख रहा था और मैं में में Drupal 8 issues एक पाया:

यह अच्छा काम करता है मेरे लिए अब अपने मौजूदा Drupal 7 में स्थापित (ओं):

सहेजें इस रूप में .htrouter.php (या जो भी आप चाहें तो) और के साथ अपने Drupal जड़ dir में चलाएँ:

php -S localhost:8080 .htrouter.php

<?php 
/** 
* @file 
* The router.php for clean-urls when use PHP 5.4.0 built in webserver. 
* 
* Usage: 
* 
* php -S localhost:8888 .htrouter.php 
* 
*/ 
$url = parse_url($_SERVER["REQUEST_URI"]); 
if (file_exists('.' . $url['path'])) { 
    // Serve the requested resource as-is. 
    return FALSE; 
} 
// Remove opener slash. 
$_GET['q'] = substr($url['path'], 1); 
include 'index.php'; 

(https://drupal.org/files/router-1543858-3.patch से बनाया स्निपेट)

3

अब आप और अधिक आसानी से आदेश के साथ एक सर्वर शुरू कर सकते हैं:

drush runserver

+0

यह एकमात्र उत्तर है जो मेरे लिए काम करता है। 'ड्रश' को 'drush.phar' के लिए उपनाम या सिम्लिंक होना चाहिए अन्यथा आपको फ़ार के भीतर फ़ाइल ढूंढने में सक्षम होने के बारे में कोई त्रुटि नहीं है। – contrebis

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