Xampp Setup Multi Site Configuration on Windows

I use this mostly for WordPress & Laravel.
Primarily this is useful for any PHP projects.

Step 1 : 
You need to enable vhosts.
Open C:\xampp\apache\conf\httpd.conf
Find the line inside there that looks like this : 
# Virtual hosts
# Include conf/extra/httpd-vhosts.conf

And remove the # from the include statement.
# Virtual hosts
include conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
ServerName leantime.localhost
DocumentRoot “/Applications/XAMPP/xamppfiles/htdocs/leantime/public”
<Directory “/Applications/XAMPP/xamppfiles/htdocs/leantime/public”>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog “logs/leantime.localhost-error_log”
CustomLog “logs/leantime.localhost-access_log” common
</VirtualHost>

Step 2 : 
Enable any php extensions you want to use. 
In the xampp control panel. If you select config on the apache line. Select PHP (php.ini)
This is where you enable php extensions you may need.

Same as before. If you want to enable any extensions. 
Remove the # at the beginning of the line.

Step 3 : 
You need to configure the httpd-vhosts.conf and hosts

Vhosts

Then you need to update https-vhosts.conf with your project directory. 
The file can be found at : 
C:\xampp\apache\conf\extra\https-vhosts.conf

Inside the hosts file for each project you want to add. 

# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
##NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ##ServerName or ##ServerAlias in any <VirtualHost> block.
#
##<VirtualHost *:80>
##ServerAdmin webmaster@dummy-host.example.com
##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
##ServerName dummy-host.example.com
##ServerAlias www.dummy-host.example.com
##ErrorLog "logs/dummy-host.example.com-error.log"
##CustomLog "logs/dummy-host.example.com-access.log" common
##</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/dashboard"
ServerName localhost
</VirtualHost>
####################################
# Sites
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/digi"
ServerName site-name1.localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/coverweb/public"
ServerName site-name2.localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/coverweb/public"
ServerName site-name3.localhost
</VirtualHost>

hosts file

This is located under : 
C:\Windows\System32\drivers\etc
hosts

Open the hosts file with administrative privileges.
Use any text editor of your choice. 

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 192.168.0.1 local.website1.com # Comment here
# 192.168.0.1 local.website2.com # Comment here

# localhost name resolution is handled within DNS itself.
127.0.0.1 localhost
::1 localhost
###########################################
# Sites
127.0.0.1 site-name1.localhost
127.0.0.1 site-name2.localhost
127.0.0.1 site-name3.localhost
###########################################
wsl.localhost
###########################################
# Added by Docker Desktop
192.168.0.106 host.docker.internal
192.168.0.106 gateway.docker.internal
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section
Fix C & C General DirectX 8.1 Error + Screen Size
  • Solution 1 : 
    Go into the game root directory. (The folder that has your generals.exe) and delete the dbghelp.dll
  • Solution 2 : 
    Edit the options.ini file.
    I installed my game through Steam on Windows 11.
    Now it’s important to note that on the newer versions of windows.
    Some documents get uploaded automatically to a OneDrive folder.
    This caused a lot of confusion for me because my documents folder with the ini file was empty.
    • There are 2 directories you can check for the Options.ini folder.
      • 1 : C:\Users\User\OneDrive\Documents\Command and Conquer Generals Zero Hour Data
      • 2 : C:\Users\User\Documents\Command and Conquer Generals Zero Hour Data
        • Inside one of those directories. You should find an Options.ini file. 
          Inside the file update your resolution to 800 600
          You can adjust it once the game starts. But just to get the game started update it to 800 600

          AntiAliasing = 18
          CampaignDifficulty = 2
          GameSpyIPAddress = 0.0.0.0
          Gamma = 50
          IPAddress = 0.0.0.0
          IdealStaticGameLOD = High
          LanguageFilter = false
          MusicVolume = 55
          Resolution = 800 600
          Retaliation = yes
          SFX3DVolume = 79
          SFXVolume = 71
          ScrollFactor = 50
          SendDelay = no
          StaticGameLOD = High
          UseAlternateMouse = no
          UseDoubleClickAttackMove = no
          VoiceVolume = 70
  • Solution 3, Also I believe this was my fix for the screen size limitation : 
    Install the C&C GenTool_v8.8.exe
    I can’t remember exactly which site I installed this from. I found a link on Reddit.
    I do not take any credit for this tool. I found it online.
    I did not make it. But it did solve my issue. 
CSS Color (Colour) Concatenation

So I figured this out by mistake and had my mind blow when I saw it. Haha I have been programming with CSS for 7 years and I didn’t know this!

I was adjusting default bootstrap checkbox colours and I accidentally typed an additional colour without clearing and it ended up splitting the colours. Looks quite cool! Check how the border splits half half on each side with the colours.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
.form-check-input:checked {
background-color: #000;
border-color: #000#FFF;
}
.form-check-input:checked { background-color: #000; border-color: #000#FFF; }
.form-check-input:checked {
    background-color: #000;
    border-color: #000#FFF;
}
Powering IT with Virtualization and Storage Technologies

(VMware vSphere, Microsoft Hyper-V, Proxmox Virtual Environment (Proxmox VE), Oracle VirtualBox, Docker, Kubernetes, FreeNAS, OpenMediaVault, VMware Workstation/Fusion, Microsoft Azure, Amazon EC2, Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), DigitalOcean, Synology DiskStation, QNAP NAS, Western Digital My Cloud)

Virtualization and Storage Technologies for Website Hosting, Website Containerization, Dedicated Storage, and VM Deployments:

  1. Virtualization Platforms:
  • VMware vSphere: Enterprise-level virtualization for server consolidation, high availability, and resource management.
  • Microsoft Hyper-V: Virtualization platform for running multiple VMs on Windows servers.
  • Proxmox Virtual Environment (Proxmox VE): Open-source virtualization with KVM and LXC support for data centers and cloud environments.
  • Oracle VirtualBox: General-purpose virtualization software for testing and development on desktops.
  1. Website Containerization:
  • Docker: Containerization platform for packaging applications and their dependencies for easy deployment and scalability.
  • Kubernetes: Container orchestration system for automating, scaling, and managing containerized applications.
  1. Dedicated Storage Operating Systems:
  • FreeNAS: Open-source NAS OS with support for SMB/CIFS, NFS, and iSCSI, offering data redundancy through ZFS.
  • OpenMediaVault: NAS OS with a web-based interface, supporting various file sharing protocols and plugins.
  1. Virtual Machine Deployment:
  • VMware Workstation/Fusion: Desktop virtualization for testing and development of VMs on personal computers.
  • Oracle VirtualBox: General-purpose virtualization software also used for testing and running VMs on desktops.
  • Microsoft Azure: Cloud platform offering VM deployment and management in the cloud.
  • Amazon EC2: Cloud-based VMs on Amazon Web Services (AWS) for scalable computing.
  1. Cloud Hosting Services:
  • Amazon Web Services (AWS): Cloud computing platform with various services, including EC2 for VMs and S3 for storage.
  • Microsoft Azure: Cloud platform offering VMs, databases, and other services for website hosting and application deployment.
  • Google Cloud Platform (GCP): Cloud services with Compute Engine for VMs and Cloud Storage for scalable storage.
  • DigitalOcean: Cloud provider with Droplets (VMs) and Spaces for object storage.
  1. Network-Attached Storage (NAS) Solutions:
  • Synology DiskStation: NAS solution with a user-friendly interface, supporting various services like file sharing, backups, and media streaming.
  • QNAP NAS: Network storage solutions with comprehensive applications and RAID configurations for data protection.
  • Western Digital My Cloud: Personal cloud storage for home users with remote access to files.

These are some of the popular virtualization and storage technologies used in the IT industry, each catering to specific use cases for website hosting, containerization, storage, and VM deployments.

Laravel Import Template with Error Handling and Try Catch for failures
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public function import_data(Request $request)
{
$success = true;
try {
DB::beginTransaction();
foreach ($request->array_or_object as $item) {
$record_payload = [
"name" => $item->name,
"surname" => $item->surname,
];
$record_id = $item->id ?? null;
$inserted_record = RecordModel::updateOrCreate(['id' => $record_id], $record_payload);
if (!$inserted_record) {
$success = false;
break; // Stop further processing if any insert fails
}
}
if ($success) {
DB::commit();
return ['status' => true, 'message' => 'Success, Your import has completed with no issues.'];
} else {
DB::rollBack();
return ['status' => false, 'message' => 'Unsuccessful Transaction. Not an exception.'];
}
} catch (\Exception $e) {
DB::rollBack();
$i = count($e->errorInfo) - 1;
return ['status' => false, 'message' => $e->errorInfo[$i]];
}
}
public function import_data(Request $request) { $success = true; try { DB::beginTransaction(); foreach ($request->array_or_object as $item) { $record_payload = [ "name" => $item->name, "surname" => $item->surname, ]; $record_id = $item->id ?? null; $inserted_record = RecordModel::updateOrCreate(['id' => $record_id], $record_payload); if (!$inserted_record) { $success = false; break; // Stop further processing if any insert fails } } if ($success) { DB::commit(); return ['status' => true, 'message' => 'Success, Your import has completed with no issues.']; } else { DB::rollBack(); return ['status' => false, 'message' => 'Unsuccessful Transaction. Not an exception.']; } } catch (\Exception $e) { DB::rollBack(); $i = count($e->errorInfo) - 1; return ['status' => false, 'message' => $e->errorInfo[$i]]; } }
public function import_data(Request $request)
{
    $success = true;

    try {
        DB::beginTransaction();

        foreach ($request->array_or_object as $item) {
            $record_payload = [
                "name" => $item->name,
                "surname" => $item->surname,
            ];

            $record_id = $item->id ?? null;
            $inserted_record = RecordModel::updateOrCreate(['id' => $record_id], $record_payload);

            if (!$inserted_record) {
                $success = false;
                break; // Stop further processing if any insert fails
            }
        }

        if ($success) {
            DB::commit();
            return ['status' => true, 'message' => 'Success, Your import has completed with no issues.'];
        } else {
            DB::rollBack();
            return ['status' => false, 'message' => 'Unsuccessful Transaction. Not an exception.'];
        }
    } catch (\Exception $e) {
        DB::rollBack();
        $i = count($e->errorInfo) - 1;
        return ['status' => false, 'message' => $e->errorInfo[$i]];
    }
}

Search

Your Favourite Posts

  • Your favorites will be here.

Latest Content

© Garth Baker 2025 All rights reserved.

Pin It on Pinterest

Garth Baker
en
af
sq
am
ar
hy
az
eu
be
bn
bs
bg
ca
ceb
ny
zh-CN
zh-TW
co
hr
cs
da
nl
en
eo
et
tl
fi
fr
fy
gl
ka
de
el
gu
ht
ha
haw
iw
hi
hmn
hu
is
ig
id
ga
it
ja
jw
kn
kk
km
ko
ku
ky
lo
la
lv
lt
lb
mk
mg
ms
ml
mt
mi
mr
mn
my
ne
no
ps
fa
pl
pt
pa
ro
ru
sm
gd
sr
st
sn
sd
si
sk
sl
so
es
su
sw
sv
tg
ta
te
th
tr
uk
ur
uz
vi
cy
xh
yi
yo
zu
Share This