Having recently switched from SyntaxHighlighter MT to the SyntaxHighlighter Evolved plugin I was unable to get my custom Apache brush I use for .htaccess and *.conf files to work.
While searching for an answer I happened upon a better although seemingly unfinished version of an Apache brush, but still couldn’t get it work. A little further digging and I learnt that I needed to write a plugin to use a custom brush with SyntaxHighlighter Evolved.
syntaxhighlighter-evolved-apache.zip8KB4th June 2014
My version of the plugin is based on shApacheConfig.js by Riley Wills and while still very much a work in progress, provides adequate though not exhaustive highlighting. Any suggestions or modifications are extremely welcome.
The plugin defines two valid brush names: apache and conf either of which may be used in a <pre> tag or shortcode like so:
<pre class="brush: apache;"> </pre>
Using a <pre> tag
[apache] [/apache]
Using a shortcode
Installation instructions and further notes on usage can be found in the readme.txt file included in syntaxhighlighter-evolved-apache.zip.
The code snippets below are not necessarily working examples and are intended merely to demonstrate the brush’s highlighting capabilities.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Example .htaccess file
#
# Do not add a slash at the end of the directory path. If you point
# ServerRoot at a non-local disk, be sure to point the LockFile directive
# at a local disk. If you wish to share the same ServerRoot for multiple
# httpd daemons, you will need to change at least LockFile and PidFile.
#
ServerRoot "/Applications/XAMPP/xamppfiles"
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbd_module modules/mod_authn_dbd.so
<IfDefine JUSTTOMAKEAPXSHAPPY>
LoadModule php4_module modules/libphp4.so
LoadModule php5_module modules/libphp5.so
</IfDefine>
<IfModule !mpm_winnt_module>
<IfModule !mpm_netware_module>
User nobody
Group nogroup
</IfModule>
</IfModule>
ServerAdmin you@example.com
ServerName localhost
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
Options FollowSymLinks
AllowOverride None
#XAMPP
Order deny,allow
Deny from all
</Directory>
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/Applications/XAMPP/xamppfiles/htdocs">
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html index.php index.htmls index.htm
</IfModule>
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
ErrorLog logs/error_log
#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog logs/access_log common
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/Applications/XAMPP/xamppfiles/cgi-bin/"
</IfModule>
<IfModule cgid_module>
Scriptsock logs/cgisock
</IfModule>
#
# "/Applications/xampp/xamppfiles/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/Applications/XAMPP/xamppfiles/phpmyadmin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
DefaultType text/plain
<IfModule mime_module>
TypesConfig etc/mime.type
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddHandler cgi-script .cgi .pl .asp
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
MIMEMagicFile etc/magic
#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
ErrorDocument 500 "The server made a boo boo."
ErrorDocument 404 /missing.html
ErrorDocument 404 "/cgi-bin/missing_handler.pl"
ErrorDocument 402 http://www.example.com/subscription_info.html
EnableMMAP off
EnableSendfile off
# Server-pool management (MPM specific)
Include /Applications/XAMPP/etc/extra/httpd-mpm.conf
# Multi-language error messages
Include /Applications/XAMPP/etc/extra/httpd-multilang-errordoc.conf
<IfModule ssl_module>
<IfDefine SSL>
Include etc/extra/httpd-ssl.conf
</IfDefine>
</IfModule>
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
# but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
#XAMPP
Include etc/extra/httpd-xampp.conf
#
# Use name-based virtual hosting.
#
NameVirtualHost *
# tech-otaku [AllowOveride All for WordPress installs to stop 404 Page Not Found errors. Source: http://codex.wordpress.org/Using_Permalinks#Using_.22Pretty.22_permalinks]
<VirtualHost *>
ServerName macbook.to
DocumentRoot "/Users/steve/Sites/DOMAINS/tech-otaku.com"
<Directory "/Users/steve/Sites/DOMAINS/tech-otaku.com">
Options Indexes FollowSymLinks Includes execCGI
AllowOverride All
Order Allow,Deny
Allow From All
</Directory>
</VirtualHost>
Example .httpd.conf file (XAMPP)
Change Log
| 0.9.1 | Fixed Uncaught TypeError in shBrushApache.js | 2014-06-04 |
| 0.9.0 | Initial Release | 2013-04-05 |
E-VANCE
Glad you found it useful.
Regards, Steve.
Hey Steve,
thanks for the plugin, works like charm! I ran into the need to highlight some Apache-code with my newest blog-post and this came in very handy.
Keep it up & thanks again!
Hi. I’m the author of the Syntax Highlighter MT plugin, and was just curious why you decided to switch away.
Hi Chad,
I actually prefer your implementation over others, but upgrading from v1.0 recently caused problems with code highlighting on this site. I tried SyntaxHighlighter Evolved and apart from a few tweaks it appears to behave better.
Regards, Steve.
Yeah, that was a pretty bug update from 1.0 to 2.0. Sorry you ran into problems.
Hi Chad,
No worries and thanks for the update.
Regards, Steve.