Title: [Plugin: Simple 301 Redirects] Code Update &#8211; Added Regular Expressions
Last modified: August 20, 2016

---

# [Plugin: Simple 301 Redirects] Code Update – Added Regular Expressions

 *  [jackie.shaffer](https://wordpress.org/support/users/jackieshaffer/)
 * (@jackieshaffer)
 * [14 years, 10 months ago](https://wordpress.org/support/topic/plugin-simple-301-redirects-code-update-added-regular-expressions/)
 * I really enjoyed using this 301 redirect plugin, but I did have a need to include
   regular expressions in my redirects.
 * Here is the code to update (would love to see something like this included in
   an update to the plugin, possible with more elegant coding)
 * **above line #263**
    `} // end class Simple301Redirects`
 * **Add the following:**
 *     ```
       //need to prepare url string for preg_match and replace
   
                      function prepare_preg_url($url, $encap_slash=false){
   
       			$url = str_replace('/', '\/', rtrim($url,'/'));
       			if( $encap_slash)
       			$url = '/'.$url.'/';
   
       			return $url;
       		}
       ```
   
 * **Then around line 180
    replace the function function redirect() with
 *     ```
       function redirect()
   
       		{
   
       			// this is what the user asked for (strip out home portion, case insensitive)
   
       			$userrequest = str_ireplace(get_option('home'),'',$this->getAddress());
   
       			$userrequest = rtrim($userrequest,'/');
   
       			$redirects = get_option('301_redirects');
   
       			if (!empty($redirects)) {
   
       				foreach ($redirects as $storedrequest => $destination) {
   
       				// compare user request to each 301 stored in the db
       				$preg_storedrequest=$this->prepare_preg_url($storedrequest, true);
       				$preg_destination = $this->prepare_preg_url($destination);
   
       				if (preg_match($preg_storedrequest, urldecode($userrequest))) {
   
       					$destination = preg_replace($preg_storedrequest , $preg_destination, urldecode($userrequest));
   
       						header ('HTTP/1.1 301 Moved Permanently');
   
       						header ('Location: ' . $destination);
   
       						exit();
   
       					}
   
       					else { unset($redirects); }
   
       				}
   
       			}
   
       		} // end funcion redirect
       ```
   
 * Then you can add Regular Expressions into your 301 redirects, for example:
 *     ```
       Request: oldpage-([0-9]+)-([0-9]+)/
       Destination: /newpage.php?var1=\\1&var2=\\2
       ```
   
 * [http://wordpress.org/extend/plugins/simple-301-redirects/](http://wordpress.org/extend/plugins/simple-301-redirects/)

Viewing 5 replies - 1 through 5 (of 5 total)

 *  Thread Starter [jackie.shaffer](https://wordpress.org/support/users/jackieshaffer/)
 * (@jackieshaffer)
 * [14 years, 10 months ago](https://wordpress.org/support/topic/plugin-simple-301-redirects-code-update-added-regular-expressions/#post-2192414)
 * I have simplified the code, please use the below for the most recent version
 * This small update will allow Regular Expressions into your 301 redirects, for
   example:
 *     ```
       Request: oldpage-([0-9]+)-([0-9]+)/
       Destination: /newpage.php?var1=$1&var2=$2
       ```
   
 * **around line 180
    replace the function function redirect() with
 *     ```
       function redirect()
   
       		{
   
       			// this is what the user asked for (strip out home portion, case insensitive)
   
       			$userrequest = str_ireplace(get_option('home'),'',$this->getAddress());
   
       			$userrequest = rtrim($userrequest,'/');
   
       			$redirects = get_option('301_redirects');
   
       			if (!empty($redirects)) {
   
       				foreach ($redirects as $storedrequest => $destination) {
   
       				// compare user request to each 301 stored in the db
       				$storedrequest='/'.str_replace('/', '\/', rtrim($storedrequest,'/')).'/';
   
       				if (preg_match($storedrequest, urldecode($userrequest))) {
   
       					$destination = preg_replace($storedrequest , $destination, urldecode($userrequest));
   
       						header ('HTTP/1.1 301 Moved Permanently');
   
       						header ('Location: ' . $destination);
   
       						exit();
   
       					}
   
       					else { unset($redirects); }
   
       				}
   
       			}
   
       		} // end funcion redirect
       ```
   
 *  [rashmani](https://wordpress.org/support/users/rashmani/)
 * (@rashmani)
 * [14 years, 6 months ago](https://wordpress.org/support/topic/plugin-simple-301-redirects-code-update-added-regular-expressions/#post-2192665)
 * Hi Jackie,
 * I definitely need to use the plugin for my website (moved from a Joomla installation
   to WP) and I ultra-definitely need your update to avoid manually setting >400
   rewrite rules.
    I’ve installed and tested the plugin with a single rule, now 
   I should add your code. Before moving on tough, I have to admit my newbie-ness
   with regexp and ask for an advice. The question is: I need to replace the domain
   in old Joomla URLs with a new one, like rewriting
 *     ```
       http://www.lundici.it/?option=com_k2&view=item&id=106:shackleton&Itemid=73
       ```
   
 * into
 *     ```
       http://vintage.lundici.it/?option=com_k2&view=item&id=106:shackleton&Itemid=73
       ```
   
 * How would you proceed to write a regexp for this?
 * Thanks for your code update!
    Cheers, rash*
 *  [rashmani](https://wordpress.org/support/users/rashmani/)
 * (@rashmani)
 * [14 years, 6 months ago](https://wordpress.org/support/topic/plugin-simple-301-redirects-code-update-added-regular-expressions/#post-2192668)
 * Hi again Jackie,
 * ok, I found my way with regex, using this tool: [http://rejex.heroku.com/](http://rejex.heroku.com/)
   and reading a few docs.
    My regex doesn’t fully work yet but I’m close. Thanks
   again!
 * rash*
 *  [rashmani](https://wordpress.org/support/users/rashmani/)
 * (@rashmani)
 * [14 years, 6 months ago](https://wordpress.org/support/topic/plugin-simple-301-redirects-code-update-added-regular-expressions/#post-2192669)
 * Uhm,
 * I’m stuck.
    I have a working regex, as far as [http://rejex.heroku.com/](http://rejex.heroku.com/)
   tells me, but I get not redirected where I want when I try my regex with the 
   plugin. So my regex is:
 *     ```
       ^\/\?option\=com_k2&view\=item&id\=([0-9]+)\:([A-Za-z0-9-]*)\&Itemid\=([0-9]+)
       ```
   
 * which matches this kind of URLs
 *     ```
       /?option=com_k2&view=item&id=329:la-posta-del-cuore-di-nt&Itemid=96
       ```
   
 * also exposing groups
 *     ```
       1.329
       2.la-posta-del-cuore-di-nt
       3.96
       ```
   
 * Within the plugin settings page, I then rewrite the URL as
    `http://vintage.lundici.
   it/?option=com_k2&view=item&id=$1:$2&Itemid=$3` but this doesn’t seem to work.
   What am I doing wrong?
 * Thanks for any help/hint you may provide.
 * Cheers,
    rash*
 *  [chadvonnau](https://wordpress.org/support/users/chadvonnau/)
 * (@chadvonnau)
 * [14 years, 4 months ago](https://wordpress.org/support/topic/plugin-simple-301-redirects-code-update-added-regular-expressions/#post-2192680)
 * Thanks, Jackie. Works great for me.
 * I’m migrating from an old site that was static html. Here’s the regex I’m using:
 *     ```
       Request: /(.*).html
       Destination: /$1
       ```
   

Viewing 5 replies - 1 through 5 (of 5 total)

The topic ‘[Plugin: Simple 301 Redirects] Code Update – Added Regular Expressions’
is closed to new replies.

 * ![](https://ps.w.org/simple-301-redirects/assets/icon-256x256.jpg?rev=2783827)
 * [Simple 301 Redirects By BetterLinks - Easy WordPress Redirect Manager for Redirects, 404 Error Log & More](https://wordpress.org/plugins/simple-301-redirects/)
 * [Support Threads](https://wordpress.org/support/plugin/simple-301-redirects/)
 * [Active Topics](https://wordpress.org/support/plugin/simple-301-redirects/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/simple-301-redirects/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/simple-301-redirects/reviews/)

 * 5 replies
 * 3 participants
 * Last reply from: [chadvonnau](https://wordpress.org/support/users/chadvonnau/)
 * Last activity: [14 years, 4 months ago](https://wordpress.org/support/topic/plugin-simple-301-redirects-code-update-added-regular-expressions/#post-2192680)
 * Status: not resolved