IIS Rewrite Rule for Redirect to Directory

Microsoft Dynamics GPThe web hosat I am currently with allows multiple domains, but only 6 websites; this means I have to be a little creative sometimes when creating additional sites.

I actually have a lot more than six websites being hosted on my account, due to a mix of WordPress MU and redirects to folders.

The redirect is done using an IIS rewrite rule. As I may be moving web host soon, I’m posting this so that I have easy access should I need.

This code goes in the rewrite section of the web.config file:

/*
Created by Ian Grieve of azurecurve|Ramblings of a Dynamics GP Consultant (http://www.azurecurve.co.uk)
This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int).
*/
<rewrite>
	<rules>
		<rule name="Rewrite subdomain.azurecurve.co.uk subdomain to dir" enabled="true">
			<match url="^(.*)$" />
			<conditions>
				<add input="{HTTP_HOST}" pattern="^subdomain\.azurecurve\.co\.uk$" />
			</conditions>
			<action type="Rewrite" url="_subdomain.azurecurve.co.uk/{R:1}" />
		</rule>
		<rule name="subdomain.azurecurve* wordpress" patternSyntax="Wildcard">
			<match url="*subdomain.azurecurve*" />
			<conditions>
				<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
				<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
			</conditions>
			<action type="Rewrite" url="_subdomain.azurecurve.co.uk/index.php" />
		</rule>
</rewrite>

The second rule is, I believe, required specifically for redirects for WordPress sites, the majority of which my rewrites are for.

What Will 2019 Bring For Gutenberg in WordPress

GutenbergBack towards the end of last year, I did a few posts on Gutenberg for WordPress. Since then there’s been a bit more clarity around what 2019 will bring for Gutenberg in WordPress.

A post on the Make WordPress blog explains how phase 2 will be about introducing Gutenberg to the Customizer:

Gutenberg phase 1 and 2

This means that the sidebar, widgets, and menus will all be moved to Gutenberg.

Assurances that the Classic Editor will be supported until 31st December 2021 are largely worthless, as Gutenberg will be rolling out into Customizer in 2019 and this will fundamentally change WordPress.

Themes already need to be updated for Gutenberg as a post editor; entire new themes, or huge rewrites, will be required when the Customizer changes.

WordPress/ClassicPress Plugin Development: Checking If Function Exists In Namespace

WordPress PluginI’ve been developing my own plugins for WordPress and, more reently, ClassicPress. At times it’s been necessary to check if a function exists.

It’s fairly straightforward to do this check:

if (!function_exists('azrcrv_get_breadrumbs')){
	// code here
}

I also use a few plugins developed by other people. One of the ones I’ve been reviewing recently is Estimated Read Time by CodePotent.

John uses namespaces in his plugins which means the check also needs to include the namespace. You can check for this using the following syntax (the highlighted section is the namespace defined in the plugin):

if (function_exists('CodePotent\EstimatedReadTime\process_shortcode')){
	// code here
}

I’m posting this as a reminder to myself as it took me a few minutes of searching before I found the right answer.

Allow WordPress to Perform Minor Updates

WordPressBack in December I posted about stopping WordPress from updating to WordPress 5 (which includes the terrible Gutenberg.

However, I realised soon afterwards that was the wrong thing to do; instead I should have allowed WordPress to perform minor updates within the WordPress 4 branch, which can be done using the below line:

define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Once this line has been added to your wp.config file, WordPress 4 will be able to update to later WordPress 4 versions, but not to WordPress m5.

How To Downgrade WordPress 5.0.3 to 4.9.9

WordPressI’ve discussed before the problems WordpRess 5 and Gutenberg present me; I’ve avoided upgrading to WordPress 5 and remained on Wordpress 4.9.x as I plan my migration to ClassicPress.

Despite remaining on the WordPress 4.9.x branch and telling WordPress, via the config file, to only allow minor upgrades within that branch, the admin dashboard has a large Update Now button which will upgrade you to WordPress 5. Today I had an accident and clicked this button when I intended to click the Update Plugins button.

WordPress dashboard showing Update Now and Update Plugins buttons

Continue reading “How To Downgrade WordPress 5.0.3 to 4.9.9”

Local by Flywheel: Review

Local By FlywheelThis post is part of the series on Local by Flywheel.

Over the course of this series, I’ve installed Local by Flywheel, created and tested the default WordPress site and also accessed the local development site from the Internet.

Overall I have been very impressed with Local by Flywheel. It is a very easy installation, flexible yet simple setup and easy enough to access both internally and externally.

It would be nice, in future, to see ClassicPress available as a default install rather than having to either migrate the default WordPress one or manually replace it with ClassicPress, but that might come with time as ClassicPress grows.

Local by Flywheel: Test Updated Site Works

Local By FlywheelThis post is part of the series on Local by Flywheel.

The change to the wp.config file is the last of the changes needed to complete the migration of the live site into Local by Flywheel.

With the complete, you can access the site and test to make sure that everything has migrated correctly.

Local by Flywheel: Update wp.config

Local By FlywheelThis post is part of the series on Local by Flywheel.

The final step of migrating a live site into Local by Flywheel is to change the wp.config file; this is what tells the WordPres site which database to connect and the credentials to do so.

The settings required for the wp.config file can be found on the Database tab in Local by Flywheel:

Database tab showing connection settings

Continue reading “Local by Flywheel: Update wp.config”

Local by Flywheel: Upload Own Files

Local By FlywheelThis post is part of the series on Local by Flywheel.

With the database restored, the next step is to upload the files from the live site. I used FileZilla to FTP to the site and download the files.

One you have the files downloaded, they need to be copied to the Local by Flywheel version of the site. The fields are accessible using Windows Explorer. The easiest way to get to the folder, is via the Overview tab. On this tab, click the open button (arrow in circle) below the site name:

Site Overview tab showing the open button.

This will launch Windows Explorer to the Local Sites folder; expand the required site >> app >> public; all of the files in here can be deleted and replaced with the ones downloaded from the live site:

Windows Explorer showing the site

As well as uploading files from a live site, you could also upload the files to transfer your site from WordPress to ClassicPress.

Local by Flywheel: Update Links in Database

Local By FlywheelThis post is part of the series on Local by Flywheel.

In the last post of this series, I restored the database from my live blog into Local by Flywheel. The next step is to change the references in the database from my live domain address (https://www.azurecurve.co.uk/) to the one local to Local by Flywheel (azurecurve.local).

I did this by running the following SQL query against the database using mySQL Workbench:

/*
Created by Ian Grieve of azurecurve|Ramblings of a Dynamics GP Consultant (http://www.azurecurve.co.uk)
This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int).
*/
UPDATE
	local.azc_options
		SET
			post_content = 
						REPLACE(
								post_content
                                , 'https://www.azurecurve.co.uk'
                                , 'http://azurecurve.local');
UPDATE
	local.azc_posts
		SET
			post_content = 
						REPLACE(
								post_content
                                , 'https://www.azurecurve.co.uk'
                                , 'http://azurecurve.local');