[PULL REQUEST] Add support for Apache alias
-
I cant really do a pull request with SVN but here is some modifications.
Issue:
I got a website at in /var/www/website that is executing when ever I access https://www.domain.com/. I got a wordpress blog in /var/www/wordpress. I’ve configured Apache with an alias likeAlias /site "/var/www/wordpress" <Directory "/var/www/wordpress"> AllowOverride All Allow from All </Directory>
There are two problems with the plugin when running this setup.
#1 w3_get_document_root() and w3_get_home_root() are returning blank strings
#2 RewriteBase is misconfigured for the minify/.htaccessSolution:
I made some changes to the functions named in #1.function w3_get_document_root() { static $document_root = null; $len = strlen($_SERVER['PHP_SELF']); $split = $len/2; if ($document_root === null) { if (!empty($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] == $_SERVER['PHP_SELF']) { $document_root = w3_get_site_root(); } elseif (!empty($_SERVER['DOCUMENT_ROOT'])) { //get the script path without the HOME $phpSelf=str_replace(w3_get_home_path(), '',w3_path($_SERVER['PHP_SELF'])); $document_root = substr(w3_path($_SERVER['SCRIPT_FILENAME']), 0, -strlen($phpSelf)); } elseif (!empty($_SERVER['PATH_TRANSLATED'])) { $document_root = substr(w3_path($_SERVER['PATH_TRANSLATED']), 0, -strlen(w3_path($_SERVER['PHP_SELF']))); } elseif (!empty($_SERVER['DOCUMENT_ROOT'])) { $document_root = w3_path($_SERVER['DOCUMENT_ROOT']); } else { $document_root = w3_get_site_root(); } $document_root = realpath($document_root); $document_root = w3_path($document_root); } return $document_root; } function w3_get_home_root() { if (w3_is_network()) { $path = w3_get_base_path(); } else { $path = w3_get_home_path(); } $root = w3_get_document_root(); $home_root = $root . $path; $home_root = realpath($home_root); if($home_root === false){ $home_root=$root; } $home_root = w3_path($home_root); return $home_root; }
To address the problem in #2 if rewrote the rules_core_generate_apache() function.
function rules_core_generate_apache($config) { $is_network = w3_is_network(); $base_path = w3_get_base_path(); $home_path = w3_get_home_path(); $rewrite_base = ($is_network ? $base_path : $home_path); $rewrite_base=rtrim($rewrite_base,'/'); $cache_dir = w3_filename_to_uri(W3TC_CACHE_MINIFY_DIR); $minify_filename = w3_make_relative_path(W3TC_DIR . '/pub/minify.php', W3TC_CACHE_MINIFY_DIR); $engine = $config->get_string('minify.engine'); $browsercache = $config->get_boolean('browsercache.enabled'); $compression = ($browsercache && $config->get_boolean('browsercache.cssjs.compression')); $rules = ''; $rules .= W3TC_MARKER_BEGIN_MINIFY_CORE . "\n"; $rules .= "<IfModule mod_rewrite.c>\n"; $rules .= " RewriteEngine On\n"; $rules .= " RewriteBase " . $rewrite_base.$cache_dir . "/\n"; $rules .= " RewriteRule /w3tc_r /* some more code.. */
Disclaimer:
This pull request is not ready to merge (since public unittests do not exist). I have not tried this solution in any other server configuration.
- The topic ‘[PULL REQUEST] Add support for Apache alias’ is closed to new replies.