13

PHPの組み込みサーバーを使用してDrupal7サイトを開発したいと考えています。クリーンURL(例: index.php?q = / about / )なしでDrupalを正常に実行しましたが、クリーンURL(例:/ about /)は通常mod_rewriteまたは同等のものに依存しています。ドキュメントでは、次のようなルーターファイルを使用してPHPサーバーを実行できることがわかります。

php -S localhost:8000 routing.php

mod_rewriteをシミュレートするには、routing.phpに何を入れる必要がありますか?

4

3 に答える 3

7

タスクは基本的に、ファイルの PHP で Drupal の .htaccess をエンコードすること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");
}

これはアルファ品質と見なす必要があります。これは、Drupal 7.14 の .htaccess ファイルを 3 分間ウォークスルーすることを表しており、10 秒以上の思考を必要とするものはすべてスキップしています。:)

ただし、Drupal のインストール スクリプトを起動して、スタイルシート、JS、イメージを期待どおりにロードし、Clean URL を使用して Drupal のページにアクセスすることはできます。この環境に Drupalをインストールするには、Drupal 7 には含まれない可能性のあるパッチが必要でした。

于 2012-07-11T18:10:27.613 に答える
3

次のコマンドを使用して、サーバーをより簡単に起動できるようになりました。

drush runserver

于 2014-12-16T13:54:30.540 に答える
3

私は自分で解決策を探していましたが、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から構築されたスニペット)

于 2013-07-23T01:57:31.317 に答える