mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-06 08:47:45 +02:00
[ticket/11824] Add option for mod_rewrite
PHPBB3-11824
This commit is contained in:
@@ -375,6 +375,7 @@ class acp_board
|
||||
'use_system_cron' => array('lang' => 'USE_SYSTEM_CRON', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||
|
||||
'legend2' => 'PATH_SETTINGS',
|
||||
'enable_mod_rewrite' => array('lang' => 'MOD_REWRITE_ENABLE', 'validate' => 'bool', 'type' => 'custom', 'method' => 'enable_mod_rewrite', 'explain' => true),
|
||||
'smilies_path' => array('lang' => 'SMILIES_PATH', 'validate' => 'rpath', 'type' => 'text:20:255', 'explain' => true),
|
||||
'icons_path' => array('lang' => 'ICONS_PATH', 'validate' => 'rpath', 'type' => 'text:20:255', 'explain' => true),
|
||||
'upload_icons_path' => array('lang' => 'UPLOAD_ICONS_PATH', 'validate' => 'rpath', 'type' => 'text:20:255', 'explain' => true),
|
||||
@@ -994,4 +995,51 @@ class acp_board
|
||||
$cache->destroy('sql', FORUMS_TABLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Option to enable/disable removal of 'app.php' from URLs
|
||||
*
|
||||
* Note that if mod_rewrite is on, URLs without app.php will still work,
|
||||
* but any paths generated by the controller helper url() method will
|
||||
* contain app.php.
|
||||
*
|
||||
* @param int $value The current config value
|
||||
* @param string $key The config key
|
||||
* @return string The HTML for the form field
|
||||
*/
|
||||
function enable_mod_rewrite($value, $key)
|
||||
{
|
||||
global $user, $config;
|
||||
|
||||
// Determine whether mod_rewrite is enabled on the server
|
||||
// NOTE: This only works on Apache servers on which PHP is NOT
|
||||
// installed as CGI. In that case, there is no way for PHP to
|
||||
// determine whether or not the Apache module is enabled.
|
||||
//
|
||||
// To be clear on the value of $mod_rewite:
|
||||
// null = Cannot determine whether or not the server has mod_rewrite
|
||||
// enabled
|
||||
// false = Can determine that the server does NOT have mod_rewrite
|
||||
// enabled
|
||||
// true = Can determine that the server DOES have mod_rewrite_enabled
|
||||
$mod_rewrite = null;
|
||||
if (function_exists('apache_get_modules'))
|
||||
{
|
||||
$mod_rewrite = (bool) in_array('mod_rewrite', apache_get_modules());
|
||||
}
|
||||
|
||||
// If $message is false, mod_rewrite is enabled.
|
||||
// Otherwise, it is not and we need to:
|
||||
// 1) disable the form field
|
||||
// 2) make sure the config value is set to 0
|
||||
// 3) append the message to the return
|
||||
$value = ($mod_rewrite === false) ? 0 : $value;
|
||||
$message = $mod_rewrite === null ? 'MOD_REWRITE_INFORMATION_UNAVAILABLE' : ($mod_rewrite === false ? 'MOD_REWRITE_DISABLED' : false);
|
||||
|
||||
// Let's do some friendly HTML injection if we want to disable the
|
||||
// form field because h_radio() has no pretty way of doing so
|
||||
$field_name = 'config[enable_mod_rewrite]' . ($message === 'MOD_REWRITE_DISABLED' ? '" disabled="disabled' : '');
|
||||
|
||||
return h_radio($field_name, array(1 => 'YES', 0 => 'NO'), $value) .
|
||||
($message !== false ? '<br /><span>' . $user->lang($message) . '</span>' : '');
|
||||
}
|
||||
}
|
||||
|
@@ -5733,6 +5733,7 @@ function phpbb_create_symfony_request(phpbb_request $request)
|
||||
*/
|
||||
function phpbb_get_web_root_path(Request $symfony_request, $phpbb_root_path = '')
|
||||
{
|
||||
global $config, $phpEx, $request;
|
||||
static $path;
|
||||
if (null !== $path)
|
||||
{
|
||||
@@ -5748,9 +5749,8 @@ function phpbb_get_web_root_path(Request $symfony_request, $phpbb_root_path = ''
|
||||
|
||||
$corrections = substr_count($path_info, '/');
|
||||
|
||||
// When URL Rewriting is enabled, app.php is optional. We have to
|
||||
// correct for it not being there
|
||||
if (strpos($symfony_request->getRequestUri(), $symfony_request->getScriptName()) === false)
|
||||
// We need to account for whether or not app.php is in the URL
|
||||
if (strpos($symfony_request->server->get('REQUEST_URI', ''), 'app.' . $phpEx) !== false)
|
||||
{
|
||||
$corrections -= 1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user