Commit fresh Drutopia project template
This commit is contained in:
parent
c4927e4c39
commit
f12d7a2aee
13 changed files with 11181 additions and 0 deletions
15
.gitignore
vendored
Normal file
15
.gitignore
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# Drutopia-provided files which should not be overridden
|
||||||
|
/web/core
|
||||||
|
/web/modules/contrib
|
||||||
|
/web/profiles/contrib
|
||||||
|
/web/themes/contrib
|
||||||
|
/web/sites/default/files
|
||||||
|
/web/index.php
|
||||||
|
/web/update.php
|
||||||
|
/web/autoload.php
|
||||||
|
/web/sites/default/default.services.yml
|
||||||
|
/web/sites/default/default.settings.php
|
||||||
|
/web/sites/development.services.yml
|
||||||
|
/web/sites/example.settings.local.php
|
||||||
|
/web/sites/example.sites.php
|
||||||
|
/vendor/
|
15
README.md
15
README.md
|
@ -0,0 +1,15 @@
|
||||||
|
This is a composer based installer for the [Drutopia distribution](http://www.drupal.org/project/drutopia).
|
||||||
|
|
||||||
|
# Prerequisites
|
||||||
|
|
||||||
|
1. [Prepare a local server for Drupal](https://www.drupal.org/docs/develop/local-server-setup)
|
||||||
|
2. [Install Composer](https://getcomposer.org/download/)
|
||||||
|
|
||||||
|
|
||||||
|
## Installation of Drutopia basic
|
||||||
|
|
||||||
|
```
|
||||||
|
composer create-project drutopia/drutopia_template:dev-master --no-interaction DIRECTORY
|
||||||
|
```
|
||||||
|
|
||||||
|
Composer will create a new directory called DIRECTORY (change to whatever presumably lower-case name you would like). Inside you will find the web directory with the entire code base of [Drutopia distribution](http://www.drupal.org/project/drutopia). You should be able to install it like any other Drupal site.
|
54
composer.json
Normal file
54
composer.json
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
{
|
||||||
|
"name": "drutopia/drutopia_template",
|
||||||
|
"description": "Template for composer-based Drutopia projects.",
|
||||||
|
"type": "project",
|
||||||
|
"license": "GPL-2.0+",
|
||||||
|
"minimum-stability": "dev",
|
||||||
|
"prefer-stable": true,
|
||||||
|
"require": {
|
||||||
|
"composer/installers": "^1.0",
|
||||||
|
"drupal-composer/drupal-scaffold": "^2.0.0",
|
||||||
|
"cweagans/composer-patches": "^1.0",
|
||||||
|
"drutopia/drutopia": "^1.0-beta2",
|
||||||
|
"drush/drush": "^9.0"
|
||||||
|
},
|
||||||
|
"repositories": {
|
||||||
|
"drupal": {
|
||||||
|
"type": "composer",
|
||||||
|
"url": "https://packages.drupal.org/8"
|
||||||
|
},
|
||||||
|
"drutopia": {
|
||||||
|
"type": "vcs",
|
||||||
|
"url": "https://github.com/drutopia/drutopia"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"post-install-cmd": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold",
|
||||||
|
"post-update-cmd": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold",
|
||||||
|
"nuke": "rm -rf vendor web/core web/modules/contrib web/profiles/contrib drush/contrib",
|
||||||
|
"quick-start": [
|
||||||
|
"composer install",
|
||||||
|
"php docroot/core/scripts/drupal quick-start drutopia --no-interaction"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"installer-paths": {
|
||||||
|
"web/core": [
|
||||||
|
"drupal/core"
|
||||||
|
],
|
||||||
|
"web/modules/contrib/{$name}": [
|
||||||
|
"type:drupal-module"
|
||||||
|
],
|
||||||
|
"web/profiles/contrib/{$name}": [
|
||||||
|
"type:drupal-profile"
|
||||||
|
],
|
||||||
|
"web/themes/contrib/{$name}": [
|
||||||
|
"type:drupal-theme"
|
||||||
|
],
|
||||||
|
"drush/contrib/{$name}": [
|
||||||
|
"type:drupal-drush"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"enable-patching": true
|
||||||
|
}
|
||||||
|
}
|
10550
composer.lock
generated
Normal file
10550
composer.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
40
web/.csslintrc
Normal file
40
web/.csslintrc
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
--errors=box-model,
|
||||||
|
display-property-grouping,
|
||||||
|
duplicate-background-images,
|
||||||
|
duplicate-properties,
|
||||||
|
empty-rules,
|
||||||
|
ids,
|
||||||
|
import,
|
||||||
|
important,
|
||||||
|
known-properties,
|
||||||
|
outline-none,
|
||||||
|
overqualified-elements,
|
||||||
|
qualified-headings,
|
||||||
|
shorthand,
|
||||||
|
star-property-hack,
|
||||||
|
text-indent,
|
||||||
|
underscore-property-hack,
|
||||||
|
unique-headings,
|
||||||
|
unqualified-attributes,
|
||||||
|
vendor-prefix,
|
||||||
|
zero-units
|
||||||
|
--ignore=adjoining-classes,
|
||||||
|
box-sizing,
|
||||||
|
bulletproof-font-face,
|
||||||
|
compatible-vendor-prefixes,
|
||||||
|
errors,
|
||||||
|
fallback-colors,
|
||||||
|
floats,
|
||||||
|
font-faces,
|
||||||
|
font-sizes,
|
||||||
|
gradients,
|
||||||
|
import-ie-limit,
|
||||||
|
order-alphabetical,
|
||||||
|
regex-selectors,
|
||||||
|
rules-count,
|
||||||
|
selector-max,
|
||||||
|
selector-max-approaching,
|
||||||
|
selector-newline,
|
||||||
|
universal-selector
|
||||||
|
--exclude-list=core/assets,
|
||||||
|
vendor
|
17
web/.editorconfig
Normal file
17
web/.editorconfig
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Drupal editor configuration normalization
|
||||||
|
# @see http://editorconfig.org/
|
||||||
|
|
||||||
|
# This is the top-most .editorconfig file; do not search in parent directories.
|
||||||
|
root = true
|
||||||
|
|
||||||
|
# All files.
|
||||||
|
[*]
|
||||||
|
end_of_line = LF
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[composer.{json,lock}]
|
||||||
|
indent_size = 4
|
8
web/.eslintignore
Normal file
8
web/.eslintignore
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
core/**/*
|
||||||
|
vendor/**/*
|
||||||
|
sites/**/files/**/*
|
||||||
|
libraries/**/*
|
||||||
|
sites/**/libraries/**/*
|
||||||
|
profiles/**/libraries/**/*
|
||||||
|
**/js_test_files/**/*
|
||||||
|
**/node_modules/**/*
|
3
web/.eslintrc.json
Normal file
3
web/.eslintrc.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"extends": "./core/.eslintrc.json"
|
||||||
|
}
|
61
web/.gitattributes
vendored
Normal file
61
web/.gitattributes
vendored
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
# Drupal git normalization
|
||||||
|
# @see https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
|
||||||
|
# @see https://www.drupal.org/node/1542048
|
||||||
|
|
||||||
|
# Normally these settings would be done with macro attributes for improved
|
||||||
|
# readability and easier maintenance. However macros can only be defined at the
|
||||||
|
# repository root directory. Drupal avoids making any assumptions about where it
|
||||||
|
# is installed.
|
||||||
|
|
||||||
|
# Define text file attributes.
|
||||||
|
# - Treat them as text.
|
||||||
|
# - Ensure no CRLF line-endings, neither on checkout nor on checkin.
|
||||||
|
# - Detect whitespace errors.
|
||||||
|
# - Exposed by default in `git diff --color` on the CLI.
|
||||||
|
# - Validate with `git diff --check`.
|
||||||
|
# - Deny applying with `git apply --whitespace=error-all`.
|
||||||
|
# - Fix automatically with `git apply --whitespace=fix`.
|
||||||
|
|
||||||
|
*.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
|
||||||
|
*.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html
|
||||||
|
*.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
|
||||||
|
*.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
|
||||||
|
*.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
|
||||||
|
*.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
|
||||||
|
*.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
|
||||||
|
*.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
|
||||||
|
*.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
|
||||||
|
*.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
*.yml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
|
||||||
|
|
||||||
|
# Define binary file attributes.
|
||||||
|
# - Do not treat them as text.
|
||||||
|
# - Include binary diff in patches instead of "binary files differ."
|
||||||
|
*.eot -text diff
|
||||||
|
*.exe -text diff
|
||||||
|
*.gif -text diff
|
||||||
|
*.gz -text diff
|
||||||
|
*.ico -text diff
|
||||||
|
*.jpeg -text diff
|
||||||
|
*.jpg -text diff
|
||||||
|
*.otf -text diff
|
||||||
|
*.phar -text diff
|
||||||
|
*.png -text diff
|
||||||
|
*.svgz -text diff
|
||||||
|
*.ttf -text diff
|
||||||
|
*.woff -text diff
|
||||||
|
*.woff2 -text diff
|
65
web/.ht.router.php
Normal file
65
web/.ht.router.php
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Router script for the built-in PHP web server.
|
||||||
|
*
|
||||||
|
* The built-in web server should only be used for development and testing as it
|
||||||
|
* has a number of limitations that makes running Drupal on it highly insecure
|
||||||
|
* and somewhat limited.
|
||||||
|
*
|
||||||
|
* Note that:
|
||||||
|
* - The server is single-threaded, any requests made during the execution of
|
||||||
|
* the main request will hang until the main request has been completed.
|
||||||
|
* - The web server does not enforce any of the settings in .htaccess in
|
||||||
|
* particular a remote user will be able to download files that normally would
|
||||||
|
* be protected from direct access such as .module files.
|
||||||
|
*
|
||||||
|
* The router script is needed to work around a bug in PHP, see
|
||||||
|
* https://bugs.php.net/bug.php?id=61286.
|
||||||
|
*
|
||||||
|
* Usage:
|
||||||
|
* php -S localhost:8888 .ht.router.php
|
||||||
|
*
|
||||||
|
* @see http://php.net/manual/en/features.commandline.webserver.php
|
||||||
|
*/
|
||||||
|
|
||||||
|
$url = parse_url($_SERVER['REQUEST_URI']);
|
||||||
|
if (file_exists(__DIR__ . $url['path'])) {
|
||||||
|
// Serve the requested resource as-is.
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Work around the PHP bug.
|
||||||
|
$path = $url['path'];
|
||||||
|
$script = 'index.php';
|
||||||
|
if (strpos($path, '.php') !== FALSE) {
|
||||||
|
// Work backwards through the path to check if a script exists. Otherwise
|
||||||
|
// fallback to index.php.
|
||||||
|
do {
|
||||||
|
$path = dirname($path);
|
||||||
|
if (preg_match('/\.php$/', $path) && is_file(__DIR__ . $path)) {
|
||||||
|
// Discovered that the path contains an existing PHP file. Use that as the
|
||||||
|
// script to include.
|
||||||
|
$script = ltrim($path, '/');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while ($path !== '/' && $path !== '.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update $_SERVER variables to point to the correct index-file.
|
||||||
|
$index_file_absolute = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $script;
|
||||||
|
$index_file_relative = DIRECTORY_SEPARATOR . $script;
|
||||||
|
|
||||||
|
// SCRIPT_FILENAME will point to the router script itself, it should point to
|
||||||
|
// the full path of index.php.
|
||||||
|
$_SERVER['SCRIPT_FILENAME'] = $index_file_absolute;
|
||||||
|
|
||||||
|
// SCRIPT_NAME and PHP_SELF will either point to index.php or contain the full
|
||||||
|
// virtual path being requested depending on the URL being requested. They
|
||||||
|
// should always point to index.php relative to document root.
|
||||||
|
$_SERVER['SCRIPT_NAME'] = $index_file_relative;
|
||||||
|
$_SERVER['PHP_SELF'] = $index_file_relative;
|
||||||
|
|
||||||
|
// Require the script and let core take over.
|
||||||
|
require $_SERVER['SCRIPT_FILENAME'];
|
189
web/.htaccess
Normal file
189
web/.htaccess
Normal file
|
@ -0,0 +1,189 @@
|
||||||
|
#
|
||||||
|
# Apache/PHP/Drupal settings:
|
||||||
|
#
|
||||||
|
|
||||||
|
# Protect files and directories from prying eyes.
|
||||||
|
<FilesMatch "\.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock))$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$">
|
||||||
|
<IfModule mod_authz_core.c>
|
||||||
|
Require all denied
|
||||||
|
</IfModule>
|
||||||
|
<IfModule !mod_authz_core.c>
|
||||||
|
Order allow,deny
|
||||||
|
</IfModule>
|
||||||
|
</FilesMatch>
|
||||||
|
|
||||||
|
# Don't show directory listings for URLs which map to a directory.
|
||||||
|
Options -Indexes
|
||||||
|
|
||||||
|
# Set the default handler.
|
||||||
|
DirectoryIndex index.php index.html index.htm
|
||||||
|
|
||||||
|
# Add correct encoding for SVGZ.
|
||||||
|
AddType image/svg+xml svg svgz
|
||||||
|
AddEncoding gzip svgz
|
||||||
|
|
||||||
|
# Most of the following PHP settings cannot be changed at runtime. See
|
||||||
|
# sites/default/default.settings.php and
|
||||||
|
# Drupal\Core\DrupalKernel::bootEnvironment() for settings that can be
|
||||||
|
# changed at runtime.
|
||||||
|
|
||||||
|
# PHP 5, Apache 1 and 2.
|
||||||
|
<IfModule mod_php5.c>
|
||||||
|
php_value assert.active 0
|
||||||
|
php_flag session.auto_start off
|
||||||
|
php_value mbstring.http_input pass
|
||||||
|
php_value mbstring.http_output pass
|
||||||
|
php_flag mbstring.encoding_translation off
|
||||||
|
# PHP 5.6 has deprecated $HTTP_RAW_POST_DATA and produces warnings if this is
|
||||||
|
# not set.
|
||||||
|
php_value always_populate_raw_post_data -1
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Requires mod_expires to be enabled.
|
||||||
|
<IfModule mod_expires.c>
|
||||||
|
# Enable expirations.
|
||||||
|
ExpiresActive On
|
||||||
|
|
||||||
|
# Cache all files for 2 weeks after access (A).
|
||||||
|
ExpiresDefault A1209600
|
||||||
|
|
||||||
|
<FilesMatch \.php$>
|
||||||
|
# Do not allow PHP scripts to be cached unless they explicitly send cache
|
||||||
|
# headers themselves. Otherwise all scripts would have to overwrite the
|
||||||
|
# headers set by mod_expires if they want another caching behavior. This may
|
||||||
|
# fail if an error occurs early in the bootstrap process, and it may cause
|
||||||
|
# problems if a non-Drupal PHP file is installed in a subdirectory.
|
||||||
|
ExpiresActive Off
|
||||||
|
</FilesMatch>
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Set a fallback resource if mod_rewrite is not enabled. This allows Drupal to
|
||||||
|
# work without clean URLs. This requires Apache version >= 2.2.16. If Drupal is
|
||||||
|
# not accessed by the top level URL (i.e.: http://example.com/drupal/ instead of
|
||||||
|
# http://example.com/), the path to index.php will need to be adjusted.
|
||||||
|
<IfModule !mod_rewrite.c>
|
||||||
|
FallbackResource /index.php
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Various rewrite rules.
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine on
|
||||||
|
|
||||||
|
# Set "protossl" to "s" if we were accessed via https://. This is used later
|
||||||
|
# if you enable "www." stripping or enforcement, in order to ensure that
|
||||||
|
# you don't bounce between http and https.
|
||||||
|
RewriteRule ^ - [E=protossl]
|
||||||
|
RewriteCond %{HTTPS} on
|
||||||
|
RewriteRule ^ - [E=protossl:s]
|
||||||
|
|
||||||
|
# Make sure Authorization HTTP header is available to PHP
|
||||||
|
# even when running as CGI or FastCGI.
|
||||||
|
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
||||||
|
|
||||||
|
# Block access to "hidden" directories whose names begin with a period. This
|
||||||
|
# includes directories used by version control systems such as Subversion or
|
||||||
|
# Git to store control files. Files whose names begin with a period, as well
|
||||||
|
# as the control files used by CVS, are protected by the FilesMatch directive
|
||||||
|
# above.
|
||||||
|
#
|
||||||
|
# NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is
|
||||||
|
# not possible to block access to entire directories from .htaccess because
|
||||||
|
# <DirectoryMatch> is not allowed here.
|
||||||
|
#
|
||||||
|
# If you do not have mod_rewrite installed, you should remove these
|
||||||
|
# directories from your webroot or otherwise protect them from being
|
||||||
|
# downloaded.
|
||||||
|
RewriteRule "/\.|^\.(?!well-known/)" - [F]
|
||||||
|
|
||||||
|
# If your site can be accessed both with and without the 'www.' prefix, you
|
||||||
|
# can use one of the following settings to redirect users to your preferred
|
||||||
|
# URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
|
||||||
|
#
|
||||||
|
# To redirect all users to access the site WITH the 'www.' prefix,
|
||||||
|
# (http://example.com/foo will be redirected to http://www.example.com/foo)
|
||||||
|
# uncomment the following:
|
||||||
|
# RewriteCond %{HTTP_HOST} .
|
||||||
|
# RewriteCond %{HTTP_HOST} !^www\. [NC]
|
||||||
|
# RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
||||||
|
#
|
||||||
|
# To redirect all users to access the site WITHOUT the 'www.' prefix,
|
||||||
|
# (http://www.example.com/foo will be redirected to http://example.com/foo)
|
||||||
|
# uncomment the following:
|
||||||
|
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
|
||||||
|
# RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
|
||||||
|
|
||||||
|
# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
|
||||||
|
# VirtualDocumentRoot and the rewrite rules are not working properly.
|
||||||
|
# For example if your site is at http://example.com/drupal uncomment and
|
||||||
|
# modify the following line:
|
||||||
|
# RewriteBase /drupal
|
||||||
|
#
|
||||||
|
# If your site is running in a VirtualDocumentRoot at http://example.com/,
|
||||||
|
# uncomment the following line:
|
||||||
|
# RewriteBase /
|
||||||
|
|
||||||
|
# Redirect common PHP files to their new locations.
|
||||||
|
RewriteCond %{REQUEST_URI} ^(.*)?/(install.php) [OR]
|
||||||
|
RewriteCond %{REQUEST_URI} ^(.*)?/(rebuild.php)
|
||||||
|
RewriteCond %{REQUEST_URI} !core
|
||||||
|
RewriteRule ^ %1/core/%2 [L,QSA,R=301]
|
||||||
|
|
||||||
|
# Rewrite install.php during installation to see if mod_rewrite is working
|
||||||
|
RewriteRule ^core/install.php core/install.php?rewrite=ok [QSA,L]
|
||||||
|
|
||||||
|
# Pass all requests not referring directly to files in the filesystem to
|
||||||
|
# index.php.
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteCond %{REQUEST_URI} !=/favicon.ico
|
||||||
|
RewriteRule ^ index.php [L]
|
||||||
|
|
||||||
|
# For security reasons, deny access to other PHP files on public sites.
|
||||||
|
# Note: The following URI conditions are not anchored at the start (^),
|
||||||
|
# because Drupal may be located in a subdirectory. To further improve
|
||||||
|
# security, you can replace '!/' with '!^/'.
|
||||||
|
# Allow access to PHP files in /core (like authorize.php or install.php):
|
||||||
|
RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$
|
||||||
|
# Allow access to test-specific PHP files:
|
||||||
|
RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?.php
|
||||||
|
# Allow access to Statistics module's custom front controller.
|
||||||
|
# Copy and adapt this rule to directly execute PHP files in contributed or
|
||||||
|
# custom modules or to run another PHP application in the same directory.
|
||||||
|
RewriteCond %{REQUEST_URI} !/core/modules/statistics/statistics.php$
|
||||||
|
# Deny access to any other PHP files that do not match the rules above.
|
||||||
|
# Specifically, disallow autoload.php from being served directly.
|
||||||
|
RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F]
|
||||||
|
|
||||||
|
# Rules to correctly serve gzip compressed CSS and JS files.
|
||||||
|
# Requires both mod_rewrite and mod_headers to be enabled.
|
||||||
|
<IfModule mod_headers.c>
|
||||||
|
# Serve gzip compressed CSS files if they exist and the client accepts gzip.
|
||||||
|
RewriteCond %{HTTP:Accept-encoding} gzip
|
||||||
|
RewriteCond %{REQUEST_FILENAME}\.gz -s
|
||||||
|
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
|
||||||
|
|
||||||
|
# Serve gzip compressed JS files if they exist and the client accepts gzip.
|
||||||
|
RewriteCond %{HTTP:Accept-encoding} gzip
|
||||||
|
RewriteCond %{REQUEST_FILENAME}\.gz -s
|
||||||
|
RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
|
||||||
|
|
||||||
|
# Serve correct content types, and prevent mod_deflate double gzip.
|
||||||
|
RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
|
||||||
|
RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]
|
||||||
|
|
||||||
|
<FilesMatch "(\.js\.gz|\.css\.gz)$">
|
||||||
|
# Serve correct encoding type.
|
||||||
|
Header set Content-Encoding gzip
|
||||||
|
# Force proxies to cache gzipped & non-gzipped css/js files separately.
|
||||||
|
Header append Vary Accept-Encoding
|
||||||
|
</FilesMatch>
|
||||||
|
</IfModule>
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Various header fixes.
|
||||||
|
<IfModule mod_headers.c>
|
||||||
|
# Disable content sniffing, since it's an attack vector.
|
||||||
|
Header always set X-Content-Type-Options nosniff
|
||||||
|
# Disable Proxy header, since it's an attack vector.
|
||||||
|
RequestHeader unset Proxy
|
||||||
|
</IfModule>
|
61
web/robots.txt
Normal file
61
web/robots.txt
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
#
|
||||||
|
# robots.txt
|
||||||
|
#
|
||||||
|
# This file is to prevent the crawling and indexing of certain parts
|
||||||
|
# of your site by web crawlers and spiders run by sites like Yahoo!
|
||||||
|
# and Google. By telling these "robots" where not to go on your site,
|
||||||
|
# you save bandwidth and server resources.
|
||||||
|
#
|
||||||
|
# This file will be ignored unless it is at the root of your host:
|
||||||
|
# Used: http://example.com/robots.txt
|
||||||
|
# Ignored: http://example.com/site/robots.txt
|
||||||
|
#
|
||||||
|
# For more information about the robots.txt standard, see:
|
||||||
|
# http://www.robotstxt.org/robotstxt.html
|
||||||
|
|
||||||
|
User-agent: *
|
||||||
|
# CSS, JS, Images
|
||||||
|
Allow: /core/*.css$
|
||||||
|
Allow: /core/*.css?
|
||||||
|
Allow: /core/*.js$
|
||||||
|
Allow: /core/*.js?
|
||||||
|
Allow: /core/*.gif
|
||||||
|
Allow: /core/*.jpg
|
||||||
|
Allow: /core/*.jpeg
|
||||||
|
Allow: /core/*.png
|
||||||
|
Allow: /core/*.svg
|
||||||
|
Allow: /profiles/*.css$
|
||||||
|
Allow: /profiles/*.css?
|
||||||
|
Allow: /profiles/*.js$
|
||||||
|
Allow: /profiles/*.js?
|
||||||
|
Allow: /profiles/*.gif
|
||||||
|
Allow: /profiles/*.jpg
|
||||||
|
Allow: /profiles/*.jpeg
|
||||||
|
Allow: /profiles/*.png
|
||||||
|
Allow: /profiles/*.svg
|
||||||
|
# Directories
|
||||||
|
Disallow: /core/
|
||||||
|
Disallow: /profiles/
|
||||||
|
# Files
|
||||||
|
Disallow: /README.txt
|
||||||
|
Disallow: /web.config
|
||||||
|
# Paths (clean URLs)
|
||||||
|
Disallow: /admin/
|
||||||
|
Disallow: /comment/reply/
|
||||||
|
Disallow: /filter/tips
|
||||||
|
Disallow: /node/add/
|
||||||
|
Disallow: /search/
|
||||||
|
Disallow: /user/register/
|
||||||
|
Disallow: /user/password/
|
||||||
|
Disallow: /user/login/
|
||||||
|
Disallow: /user/logout/
|
||||||
|
# Paths (no clean URLs)
|
||||||
|
Disallow: /index.php/admin/
|
||||||
|
Disallow: /index.php/comment/reply/
|
||||||
|
Disallow: /index.php/filter/tips
|
||||||
|
Disallow: /index.php/node/add/
|
||||||
|
Disallow: /index.php/search/
|
||||||
|
Disallow: /index.php/user/password/
|
||||||
|
Disallow: /index.php/user/register/
|
||||||
|
Disallow: /index.php/user/login/
|
||||||
|
Disallow: /index.php/user/logout/
|
103
web/web.config
Normal file
103
web/web.config
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration>
|
||||||
|
<system.webServer>
|
||||||
|
<!-- Don't show directory listings for URLs which map to a directory. -->
|
||||||
|
<directoryBrowse enabled="false" />
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Caching configuration was not delegated by default. Some hosters may not
|
||||||
|
delegate the caching configuration to site owners by default and that
|
||||||
|
may cause errors when users install. Uncomment this if you want to and
|
||||||
|
are allowed to enable caching.
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
<caching>
|
||||||
|
<profiles>
|
||||||
|
<add extension=".php" policy="DisableCache" kernelCachePolicy="DisableCache" />
|
||||||
|
<add extension=".html" policy="CacheForTimePeriod" kernelCachePolicy="CacheForTimePeriod" duration="14:00:00" />
|
||||||
|
</profiles>
|
||||||
|
</caching>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<rewrite>
|
||||||
|
<rules>
|
||||||
|
<rule name="Protect files and directories from prying eyes" stopProcessing="true">
|
||||||
|
<match url="\.(engine|inc|install|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format|composer\.(json|lock))$" />
|
||||||
|
<action type="CustomResponse" statusCode="403" subStatusCode="0" statusReason="Forbidden" statusDescription="Access is forbidden." />
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule name="Force simple error message for requests for non-existent favicon.ico" stopProcessing="true">
|
||||||
|
<match url="favicon\.ico" />
|
||||||
|
<action type="CustomResponse" statusCode="404" subStatusCode="1" statusReason="File Not Found" statusDescription="The requested file favicon.ico was not found" />
|
||||||
|
<conditions>
|
||||||
|
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
|
||||||
|
</conditions>
|
||||||
|
</rule>
|
||||||
|
<!-- If running on a PHP version affected by httpoxy vulnerability
|
||||||
|
uncomment the following rule to mitigate it's impact. To make this
|
||||||
|
rule work, you will also need to add HTTP_PROXY to the allowed server
|
||||||
|
variables manually in IIS. See https://www.drupal.org/node/2783079.
|
||||||
|
<rule name="Erase HTTP_PROXY" patternSyntax="Wildcard">
|
||||||
|
<match url="*.*" />
|
||||||
|
<serverVariables>
|
||||||
|
<set name="HTTP_PROXY" value="" />
|
||||||
|
</serverVariables>
|
||||||
|
<action type="None" />
|
||||||
|
</rule>
|
||||||
|
-->
|
||||||
|
<!-- To redirect all users to access the site WITH the 'www.' prefix,
|
||||||
|
http://example.com/foo will be redirected to http://www.example.com/foo)
|
||||||
|
adapt and uncomment the following: -->
|
||||||
|
<!--
|
||||||
|
<rule name="Redirect to add www" stopProcessing="true">
|
||||||
|
<match url="^(.*)$" ignoreCase="false" />
|
||||||
|
<conditions>
|
||||||
|
<add input="{HTTP_HOST}" pattern="^example\.com$" />
|
||||||
|
</conditions>
|
||||||
|
<action type="Redirect" redirectType="Permanent" url="http://www.example.com/{R:1}" />
|
||||||
|
</rule>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- To redirect all users to access the site WITHOUT the 'www.' prefix,
|
||||||
|
http://www.example.com/foo will be redirected to http://example.com/foo)
|
||||||
|
adapt and uncomment the following: -->
|
||||||
|
<!--
|
||||||
|
<rule name="Redirect to remove www" stopProcessing="true">
|
||||||
|
<match url="^(.*)$" ignoreCase="false" />
|
||||||
|
<conditions>
|
||||||
|
<add input="{HTTP_HOST}" pattern="^www\.example\.com$" />
|
||||||
|
</conditions>
|
||||||
|
<action type="Redirect" redirectType="Permanent" url="http://example.com/{R:1}" />
|
||||||
|
</rule>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Pass all requests not referring directly to files in the filesystem
|
||||||
|
to index.php. -->
|
||||||
|
<rule name="Short URLS" stopProcessing="true">
|
||||||
|
<match url="^(.*)$" ignoreCase="false" />
|
||||||
|
<conditions>
|
||||||
|
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
|
||||||
|
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
|
||||||
|
<add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" />
|
||||||
|
</conditions>
|
||||||
|
<action type="Rewrite" url="index.php" />
|
||||||
|
</rule>
|
||||||
|
</rules>
|
||||||
|
</rewrite>
|
||||||
|
|
||||||
|
<!-- If running Windows Server 2008 R2 this can be commented out -->
|
||||||
|
<!-- httpErrors>
|
||||||
|
<remove statusCode="404" subStatusCode="-1" />
|
||||||
|
<error statusCode="404" prefixLanguageFilePath="" path="/index.php" responseMode="ExecuteURL" />
|
||||||
|
</httpErrors -->
|
||||||
|
|
||||||
|
<defaultDocument>
|
||||||
|
<!-- Set the default document -->
|
||||||
|
<files>
|
||||||
|
<clear />
|
||||||
|
<add value="index.php" />
|
||||||
|
</files>
|
||||||
|
</defaultDocument>
|
||||||
|
|
||||||
|
</system.webServer>
|
||||||
|
</configuration>
|
Loading…
Add table
Reference in a new issue