Подтвердить что ты не робот

Обслуживание Drupal 7 со встроенным сервером PHP 5.4

Я ищу для разработки сайта Drupal 7 с использованием встроенного PHP-сервера. Я успешно запускаю Drupal без чистых URL-адресов (например, index.php? Q =/about/), но чистые URL-адреса (например,/about/) обычно полагаются на mod_rewrite или его эквивалент. В документах я вижу, что вы можете запустить PHP-сервер с таким файлом маршрутизатора:

php -S localhost:8000 routing.php

Что я должен добавить в routing.php для моделирования mod_rewrite?

4b9b3361

Ответ 1

Задача в основном заключается в кодировании Drupal.htaccess в PHP для вашего файла router.php.

Здесь начинается:

<?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");
}

Это должно считаться альфа-качеством. Он представляет собой 3-минутную прогулку по файлу Drupal 7.14.htaccess, пропускающему все, что требуется более 10 секунд.:)

Тем не менее, он позволяет мне запускать Drupal install script, с таблицами стилей, JS и изображениями, загруженными, как ожидалось, и удалять страницы Drupal с помощью Clean URL. Обратите внимание, что для установки Drupal в этой среде мне понадобился патч, который не может стать частью Drupal 7.

Ответ 2

Я искал решение самостоятельно, и я нашел его в Drupal 8 вопросов:

Это отлично работает для меня сейчас в моих существующих установках Drupal 7:

Сохраните это как .htrouter.php(или все, что вы пожелаете) и запустите в своем корневом каталоге Drupal с помощью:

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