Issue #2382513 by mikeker, chris_hall_hu_cheng, joachim, joelpittet, alexpott, YesCT, quietone, mikeker, Jeroen, joris_lucius, katy5289, sivaji@knackforge.com: Regression fix: allow Drupal 8 to work without Apache mod_rewrite
parent
3555e2b49b
commit
4a34451192
14
.htaccess
14
.htaccess
|
@ -18,9 +18,6 @@ Options -Indexes
|
||||||
# Follow symbolic links in this directory.
|
# Follow symbolic links in this directory.
|
||||||
Options +FollowSymLinks
|
Options +FollowSymLinks
|
||||||
|
|
||||||
# Make Drupal handle any 404 errors.
|
|
||||||
ErrorDocument 404 /index.php
|
|
||||||
|
|
||||||
# Set the default handler.
|
# Set the default handler.
|
||||||
DirectoryIndex index.php index.html index.htm
|
DirectoryIndex index.php index.html index.htm
|
||||||
|
|
||||||
|
@ -63,6 +60,14 @@ AddEncoding gzip svgz
|
||||||
</FilesMatch>
|
</FilesMatch>
|
||||||
</IfModule>
|
</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.
|
# Various rewrite rules.
|
||||||
<IfModule mod_rewrite.c>
|
<IfModule mod_rewrite.c>
|
||||||
RewriteEngine on
|
RewriteEngine on
|
||||||
|
@ -126,6 +131,9 @@ AddEncoding gzip svgz
|
||||||
RewriteCond %{REQUEST_URI} !core
|
RewriteCond %{REQUEST_URI} !core
|
||||||
RewriteRule ^ %1/core/%2 [L,QSA,R=301]
|
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
|
# Pass all requests not referring directly to files in the filesystem to
|
||||||
# index.php.
|
# index.php.
|
||||||
RewriteCond %{REQUEST_FILENAME} !-f
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
|
|
@ -22,6 +22,7 @@ use Symfony\Component\HttpFoundation\Request;
|
||||||
* Implements hook_requirements().
|
* Implements hook_requirements().
|
||||||
*/
|
*/
|
||||||
function system_requirements($phase) {
|
function system_requirements($phase) {
|
||||||
|
global $install_state;
|
||||||
$requirements = array();
|
$requirements = array();
|
||||||
|
|
||||||
// Report Drupal version
|
// Report Drupal version
|
||||||
|
@ -58,6 +59,80 @@ function system_requirements($phase) {
|
||||||
'value' => $software,
|
'value' => $software,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Tests clean URL support.
|
||||||
|
if ($phase == 'install' && $install_state['interactive'] && !isset($_GET['rewrite']) && strpos($software, 'Apache') !== FALSE) {
|
||||||
|
// If the Apache rewrite module is not enabled, Apache version must be >=
|
||||||
|
// 2.2.16 because of the FallbackResource directive in the root .htaccess
|
||||||
|
// file. Since the Apache version reported by the server is dependent on the
|
||||||
|
// ServerTokens setting in httpd.conf, we may not be able to determine if a
|
||||||
|
// given config is valid. Thus we are unable to use version_compare() as we
|
||||||
|
// need have three possible outcomes: the version of Apache is greater than
|
||||||
|
// 2.2.16, is less than 2.2.16, or cannot be determined accurately. In the
|
||||||
|
// first case, we encourage the use of mod_rewrite; in the second case, we
|
||||||
|
// raise an error regarding the minimum Apache version; in the third case,
|
||||||
|
// we raise a warning that the current version of Apache may not be
|
||||||
|
// supported.
|
||||||
|
$rewrite_warning = FALSE;
|
||||||
|
$rewrite_error = FALSE;
|
||||||
|
$apache_version_string = 'Apache';
|
||||||
|
|
||||||
|
// Determine the Apache version number: major, minor and revision.
|
||||||
|
if (preg_match('/Apache\/(\d+)\.?(\d+)?\.?(\d+)?/', $software, $matches)) {
|
||||||
|
$apache_version_string = $matches[0];
|
||||||
|
|
||||||
|
// Major version number
|
||||||
|
if ($matches[1] < 2) {
|
||||||
|
$rewrite_error = TRUE;
|
||||||
|
}
|
||||||
|
else if ($matches[1] == 2) {
|
||||||
|
if (!isset($matches[2])) {
|
||||||
|
$rewrite_warning = TRUE;
|
||||||
|
}
|
||||||
|
else if ($matches[2] < 2) {
|
||||||
|
$rewrite_error = TRUE;
|
||||||
|
}
|
||||||
|
else if ($matches[2] == 2) {
|
||||||
|
if (!isset($matches[3])) {
|
||||||
|
$rewrite_warning = TRUE;
|
||||||
|
}
|
||||||
|
else if ($matches[3] < 16) {
|
||||||
|
$rewrite_error = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$rewrite_warning = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($rewrite_warning) {
|
||||||
|
$requirements['apache_version'] = array (
|
||||||
|
'title' => t('Apache version'),
|
||||||
|
'value' => $apache_version_string,
|
||||||
|
'severity' => REQUIREMENT_WARNING,
|
||||||
|
'description' => t('Due to the settings for ServerTokens in httpd.conf, it is impossible to accurately determine the version of Apache running on this server. The reported value is @reported, to run Drupal without mod_rewrite, a minimum version of 2.2.16 is needed.', array('@reported' => $apache_version_string)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($rewrite_error) {
|
||||||
|
$requirements['Apache version'] = array (
|
||||||
|
'title' => t('Apache version'),
|
||||||
|
'value' => $apache_version_string,
|
||||||
|
'severity' => REQUIREMENT_ERROR,
|
||||||
|
'description' => t('The minimum version of Apache needed to run Drupal without mod_rewrite enabled is 2.2.16. See the <a href="@link">enabling clean URLs</a> page for more information on mod_rewrite.', array('@link' => 'http://drupal.org/node/15365')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$rewrite_error && !$rewrite_warning) {
|
||||||
|
$requirements['rewrite_module'] = array (
|
||||||
|
'title' => t('Clean URLs'),
|
||||||
|
'value' => t('Disabled'),
|
||||||
|
'severity' => REQUIREMENT_WARNING,
|
||||||
|
'description' => t('Your server is capable of using clean URLs, but it is not enabled. Using clean URLs gives an improved user experience and is recommended. <a href="@link">Enable clean URLs</a>', array('@link' => 'http://drupal.org/node/15365')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Test PHP version and show link to phpinfo() if it's available
|
// Test PHP version and show link to phpinfo() if it's available
|
||||||
$phpversion = $phpversion_label = phpversion();
|
$phpversion = $phpversion_label = phpversion();
|
||||||
if (function_exists('phpinfo')) {
|
if (function_exists('phpinfo')) {
|
||||||
|
|
Loading…
Reference in New Issue