Apache Configuration Cheatsheet
Quick reference for Apache directives covering basic config, virtual hosts, rewrite rules, authentication, SSL, modules, .htaccess, and performance tuning
58 commands
ServerNameSet server hostname
ServerName www.example.comServerAliasSet server alias
ServerAlias example.com *.example.comDocumentRootSet document root directory
DocumentRoot /var/www/htmlListenSet listening port
Listen 80ServerRootSet server root directory
ServerRoot /etc/apache2DirectoryIndexSet default index files
DirectoryIndex index.html index.phpErrorDocumentSet custom error pages
ErrorDocument 404 /error/404.htmlServerAdminSet admin email address
ServerAdmin admin@example.comapachectl configtestTest configuration syntax
apachectl configtestapachectl gracefulGraceful restart of Apache
apachectl graceful<VirtualHost>Define a virtual host block
<VirtualHost *:80> ... </VirtualHost><VirtualHost *:443>Define SSL virtual host
<VirtualHost *:443> SSLEngine on ... </VirtualHost>NameVirtualHostEnable name-based virtual hosting
NameVirtualHost *:80<Directory>Define per-directory settings
<Directory /var/www/html> Options Indexes FollowSymLinks </Directory>OptionsSet directory options
Options -Indexes +FollowSymLinksAllowOverrideControl .htaccess overrides
AllowOverride AllRequireSet access control
Require all grantedRewriteEngineEnable URL rewrite engine
RewriteEngine OnRewriteRuleDefine URL rewrite rule
RewriteRule ^old/(.*)$ /new/$1 [R=301,L]RewriteCondSpecify rewrite condition
RewriteCond %{HTTPS} offRewriteCond %{HTTP_HOST}Condition based on hostname
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]RewriteCond %{REQUEST_URI}Condition based on request URI
RewriteCond %{REQUEST_URI} !\.(jpg|png|gif)$ [NC]RedirectSet URL redirect
Redirect 301 /old-page https://example.com/new-pageRedirectMatchRegex-based redirect
RedirectMatch 301 ^/blog/(.*)$ https://blog.example.com/$1AuthTypeSet authentication type
AuthType BasicAuthNameSet authentication realm name
AuthName "Restricted Area"AuthUserFileSpecify password file path
AuthUserFile /etc/apache2/.htpasswdRequire valid-userAllow only authenticated users
Require valid-userRequire userAllow specific users only
Require user admin editorhtpasswdCreate/update password file
htpasswd -c /etc/apache2/.htpasswd adminRequire ipAllow access from specific IPs
Require ip 192.168.1.0/24SSLEngineEnable SSL engine
SSLEngine onSSLCertificateFileSpecify SSL certificate file
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pemSSLCertificateKeyFileSpecify SSL private key file
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pemSSLProtocolSet allowed SSL protocols
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1SSLCipherSuiteSet cipher suites
SSLCipherSuite HIGH:!aNULL:!MD5SSLHonorCipherOrderPrefer server cipher order
SSLHonorCipherOrder onHeader set Strict-Transport-SecuritySet HSTS header
Header always set Strict-Transport-Security "max-age=31536000"LoadModuleLoad a module
LoadModule rewrite_module modules/mod_rewrite.soa2enmodEnable module (Debian)
a2enmod rewritea2dismodDisable module (Debian)
a2dismod statusa2ensiteEnable site config (Debian)
a2ensite example.com.confa2dissiteDisable site config (Debian)
a2dissite 000-default.conf<IfModule>Conditional on module presence
<IfModule mod_rewrite.c> RewriteEngine On </IfModule>.htaccess RewriteEngineEnable rewrite in .htaccess
RewriteEngine On.htaccess HTTPS強制Force HTTPS redirect
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301].htaccess www強制Force www redirect
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L].htaccess キャッシュSet browser caching
ExpiresByType image/jpeg "access plus 1 year".htaccess IP制限Restrict access by IP
Require ip 192.168.1.0/24.htaccess ディレクトリ一覧禁止Disable directory listing
Options -Indexes.htaccess カスタムエラーページSet custom error pages
ErrorDocument 404 /errors/404.htmlmod_deflateEnable gzip compression
AddOutputFilterByType DEFLATE text/html text/css application/javascriptmod_expiresSet browser cache expiration
ExpiresActive On
ExpiresDefault "access plus 1 month"KeepAliveSet Keep-Alive connections
KeepAlive OnKeepAliveTimeoutSet Keep-Alive timeout
KeepAliveTimeout 5MaxKeepAliveRequestsMax Keep-Alive requests
MaxKeepAliveRequests 100MaxRequestWorkersSet max simultaneous requests
MaxRequestWorkers 150TimeoutSet request timeout
Timeout 60