The eternal battle is over, mostly: getting your WordPress permalinks to work on your Windows IIS web server with ISAPI Rewrite installed.
Some Requirments.
.htaccess file. Here’s an example that has worked with WordPress 2.7.x, ISAPI Rewrite 3, and Windows Server 2003/IIS 6.0:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
How it works.
Even with ISAPI Rewrite, your WordPress permalinks most likely will be broken without the ugly, prepended /index.php/. The problem is that the REQUEST_URI server variable is not sent by IIS or ISAPI Rewrite. This plugin solves this.
This solution is more elegant that changing the WordPress core files because it allows you to easily upgrade WordPress without additional maintenance.
Download and Documentation.
You can download ISAPI Rewriter from the WordPress Plugin directory.
You can view documentation at the ISAPI Rewrite plugin page.
RSS feed for comments on this post. TrackBack URL
Seagoat says…
I followed all the steps outlined above (for a client’s site), and the rewrite works, but somehow the stylesheet gets nuked in the process. If I undo all the changes, my styles come back, but then of course I don’t have the index.php-less URLs. :-/ Any thoughts?
andy says…
@Seagoat what version of ISAPI Rewrite are you using? Needs to be 3.0
Try changing it to this:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
I may have made a typo in the .htaccess configs and left the underscore out of the server variable within the rewrite conditions. I’ll update the post!
Seagoat says…
Thanks for getting back to me so quickly! I am indeed using 3.0, and adding the underscores seems to have fixed the problem. Yay!
I could swear that I tried removing the comments and conditionals from the default WP .htaccess and still had problems, but that might just be me being crazy. :p
Thanks again!
Joseph says…
Hi there,
Just wondering if you could shed some light. When I installed WordPress on my Windows server, a .htaccess file was not created (unless I can’t see it), and I was wondering if you could share with me where it should go? And is the following code all I need to place it in?
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
Also, once created, does the server or IIS require a reboot?
Great plug-in!
Thanks, Joseph.
andy says…
@joseph this plugin requires IIS 6 and ISAPI Rewrite 3.0, as this version supports .htaccess files and the rewrite directives included here.
There should now be a sample .htaccess file in the plugin download from the WordPress plugin repository.
If you need help with an ISAPI Rewrite installation, be sure to hit up the good folks at Helicon.
Let me know how this helped!
andy says…
@joseph and thanks for the kind words!
JD says…
It would be nice if you could expand this post and mention what setting to select when logged in as admin on wordpress i.e the permalinks section
andy says…
@JD The beauty is this allows you to use any of WordPress’ default permalink settings or your own custom setting.
IIS, ISAPI Rewrite, the .htaccess file, and this plugin will make all URL’s that aren’t existing files or directories redirect to WordPress’ main controller script.
Joseph says…
Hi Andy,
Sorry, I still don’t understand where to put the .htaccess file?
Does it go somewhere in the WordPress installation folder? Or does it go in the root of the website? Or somewhere else?
Much appreciated.
Ross.
andy says…
@Joseph The
.htaccessfile needs to be in the installation directory of WordPress.If you have WordPress installed in
C:\Inetpub\wwwroot\theandystratton.com\then the location of the.htaccessfile would beC:\Inetpub\wwwroot\theandystratton.com\.htaccessAgain, make sure you hit up the ISAPI Rewrite Support Forums for more detailed support with their product.
Joseph says…
Hello Andy,
Here are the steps I took to install your plug-in, unfortunately I still can’t get it going.
1. Installed ISAPI Rewrite 3 Lite version (for now). I did not make any changes, simply accepted the defaults from the .msi
2. Created a .htaccess file as you described, and placed it in the same directory as the WordPress index.php file (which is one directory above the other WordPress folders/files)
3. Installed / Activated your plug-in
4. Changed my permalinks to custom structure as follows; /%postname%/
When I hover over a post title it shows the correct URL, but when I click the post, I get “The system cannot find the file specified.”
Any thoughts?
Thanks, Joseph.
andy says…
Joseph, sounds like an issue with ISAPI Rewrite 3. I’d make sure you’ve got it installed and handling .htaccess properly. I would contact their support to ensure that’s functioning properly. It sounds like WordPress is doing it’s job.
You can add the following PHP snippet to a page template:
<?php var_dump($_SERVER); ?>
and make sure that the URL is present in $_SERVER['REQUEST_URI'], if it is, then the plugin is working as well.
Joseph says…
Andy,
I don’t think this will not work with the lite version of ISAPI Rewrite 3. I installed the demo of the full version, and everything is good.
I actually found a comment about this on WordPress.org.
You should edit the top of your post
Joseph.
andy says…
Joseph,
I have a working Windows Server 2008 installation using IIS 6.0, WordPress 2.7, and ISAPI Rewrite 3 (Lite). See this screen shot:
Using ISAPI Rewrite 3, Lite
Joseph says…
Hi Andy,
Strange thing… when I had the lite version installed, the only way to see the right panel (that shows the .htaccess contents) was to highlight the top node, i.e. IIS Web Sites.
When I highlighted one of the individual websites, the entire ISAPI Rewrite 3 screen went gray with a single message (something about doesn’t support… or not defined… I don’t remember).
Then when I installed the full version, and highlighted any website in the tree, the right panel was available, and it displayed the contents of .htaccess (if it found one).
Is it possible the lite version only supports 1 site?
Great plug-in btw, nice and clean, and does the job!
Thanks, Joseph.
andy says…
Nailed it! The Lite version does only support 1 site. That explains the disconnect. If you’re going to implement this setup, I’d recommend getting the full version, definitely worth it.
Thanks for the compliments, hope it helps you out!
Kerry says…
Hi
Wonder if you could offer me some advice. I added Helicon Isapi 3 to my /blog/ subdirectory, edited the httpd.conf file (assume this is the equivalent to htaccess) file to to add the rules you stated above.
I then activated your plugin and tried changing permalinks and my entire blog 404s. Not sure whya s your solution sounds a great alternative to fiddling with code!
To be honest, also tried to do this the manual way by adding rules
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?p=$1 [NC,L]
and then adding
if (isset($_SERVER['HTTP_X_REWRITE_URL']))
{
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
}
to the index.php file in the /blog/ subdirectory and then within httpdocs/blog/wp-content/themes/freshnews (freshnews being my theme) . When I add it at this level /blog/ the index page works and all posts 404. Also the code entered into the index.php seems to be pulled into my header, distorting my stylesheets.
When I add it at theme level nothing happens. Although I’m yet to try to add to index.php in /wp-content/ and/or /themes/
Seriously, do you have any idea what my problem could be with your tool? I’m going crazy!
I’m also posting my question re the manual code change issue on the Helicon forum, but thought you may have some ideas there.
Anyway, any advice appreciated!
Ash says…
Ok so i have installed this plugin successfully on the root of a site and on a subdomain of another site using the following .htaccess in the root of the site/subdomain:
# BEGIN WordPress
Options +Followsymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
CheckSpelling On
# END WordPress
and the following permalink:
/%year%/%monthnum%/%postname%
But now i’ve moved the blog to http://www.mydomain.com/blog and it doesn’t work at all.
I’ve tried creating a new site on the same hosting (all of the above mentioned sites are hosted on the same reseller hosting cp – windows) and again setting the blog up in the /blog subfolder, with htaccess in that subfolder (i’ve even copied and pasted the exact same one from your example above) and it doesn’t work – file not found.
Why would it work prefectly on the root of 4 or 5 sites but not in a subfolder?
Great plugin, any help is greatly appreciated
andy says…
I don’t have any tests within a subdirectory, but I would try updating the RewriteBase directive to be:
RewriteBase /path-name/
Right now it’s assuming the root is the base directory. Give that a try and let me know, but currently this has only been successful for me in a root directory scenario.
Ash says…
Wow thanks for the amazingly fast reply!
I figured it was the .htaccess but i dont know too much about them. I tried what you suggested and it didnt work, But then i figured i’d try the line at the bottom and it did work:
RewriteRule . /blog/index.php [L]
So for anyone who installs their blog in a subdirectory that should patch it up.
Cheers once again Andy, you’re a star :0)
andy says…
@Ash Thanks, I’m glad you got it working. Ha, if I were a true star I would’ve caught the RewriteRule as well ;p
Junaid says…
Nice work on this, I am surprised this plugin is not more popular considering how many WordPress installations would be hosted on Windows.
Please keep it maintained and up to date. It seems to work well on Windows 2008/IIS7 and WordPress 2.9 – so you could probably update the compatibility version list.
Thanks and good job.
andy says…
@Junaid thanks! I’m not sure if it’s needed on IIS 7 as I think it has rewriting capabilities, it was mainly built for IIS 6 and ISAPI Rewrite when I had to work in that environment and the support was limited to editing core WP files.
Good call on updating the stats, thanks for letting me know it’s working on Windows 2008 + IIS 7 as well as WP 2.9. I figured newer versions were supporting (and my workload has been full) so I haven’t had a chance to setup a new virtual environment to test the new versions.
Thanks again for the kind words and I’m glad it helped you out!
Chris says…
Hi,
I’m trying to get this working for a blog in a subdirectory (/blog), but I cant get it working properly. I’ve got it so the links are working fine, but however the CSS files are all broken, and then the admin pages dont work also.
I’ve used Isapi Rewrite 3 successfully on a number of sites, so this is definitely working correctly.
One possible problem is that the main site also has a .htaccess file, but this has rules to exlude blog. Could this be causing an issue? I’ve followed all the steps above.
Cheers,
Chris.
andy says…
@Chris you might want to try putting the rules in the root directory’s .htaccess file. See the comment(s) by @Ash above.
Also, try playing with the RewriteBase directive as well. If your site is working but CSS isn’t then it’s trying to rewrite the CSS URLs; I’d check to ensure you can see the CSS source when hitting them directly, and if not, the rewrite conditions ensuring the REQUEST_FILENAME property is not an actual file/directory may not be working, this could also be an issue with it being a nested .htaccess
apar says…
hi!
any one can help? how to write .htaccess in iis server to hiding file extension name
andy says…
I’m not 100% sure what you’re asking here, but if you’re having trouble creating the hidden file, I’d Google showing hidden file types in your version of Windows, then create a file named
htaccess.txtin Notepad and rename it in Windows Explorer or launch the command line,cdto the file’s directory and runrename htaccess.txt .htaccessBrian Hunt says…
Hi Andy,
My host installed ISAPI Rewrite 4 on my domain yesterday but their instructions are these undecipherable C-code instructions for the .ini file.
When you say to put the .htaccess file in the WP root, is that in the httpdocs folder? I ask because I don’t have write access to the next level up.
Once I have the .htaccess file in place, then I also need to install the WP ISAPI Rewriter plugin in WP as well?
Thanks for all your help with everyone’s questions on this.
Brian Hunt says…
Andy,
I actually found out from my host that they’re running IIRF instead of Isapi Rewriter. I used your directives above in the INI file for IIRF and got the rewriting to work except that it still has the annoying “index.php” in the address. I note there is a directive above that notes “index.php.” Is there a directive that turns this off in the URL?
apar says…
andy, exactly i am talking about, I want to hide my file extension in web server such as, from http://www.ekantipur.com/nepal.php to http://www.ekantipur.com/nepal
apar says…
<?php
//heightlighted function
class highlight
{
public $output_text; //my 483 line is here
function __construct($text, $words)
{
$split_words = explode( " " , $words );
foreach ($split_words as $word)
{
$text = preg_replace("|($word)|Ui" ,
"$1” , $text );
}
$this->output_text = $text;
}
}
?>
hi andy this is my highlight function of php, I am using PHP 5.2.6 Version, but i am getting trouble like this
problem
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in C:\Inetpub\vhosts\ebuzzasia.com\httpdocs\shopping\shopping.php on line 483
please help me?
Tom Johnson says…
I have a client who has ISAPI Rewrite 2 and can’t upgrade to 3 because he already has a ton of rewrite rules for another site. I have the WordPress blog installed in a /blog subdirectory. Do you know if there’s a way to make the method you described work with ISAPI 2? Or is it possible to install ISAPI 3 in a subdirectory to work alongside ISAPI 2? Thanks for your help,
Tom
andy says…
@apar Sorry, I this thread is for the plugin, not PHP troubleshooting. As for a custom rewrite rule to make .php files have no extension, try:
RewriteRule ^nepal/?$ nepal.php [L]You can use that and duplicate that rule for pages on your site. For more info on mod_rewrite checkout http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
andy says…
@Tom ISAPI Rewrite 3 supports the file and directory flags in the
RewriteConddirectives, but version 2 does not. That’s where the issue comes in.When I was stuck using version 2 (I avoid IIS all together now, btw), we wrote one rule for each page on the site, with the rules for sub-pages before the root page. Then we wrote a pattern for the blog URLs:
# Pages
RewriteRule ^about/news/?$ /index.php?p=4 [L]
RewriteRule ^about/?$ /index.php?p=3
# Posts
# ----
# assumes permalinks like /2010/03/postname/ID
#
RewriteRule ^\d{4}/\d{2}/[^/]+)/(\d+)/?$ index.php?p=$1 [L]
These are crude examples but should give you a starting point.
Bottom line, hacking IIS to perform the awesomeness of mod_rewrite is a pain in the ass ;]
Mauricio says…
Hi Andy. Nice idea for a plugin!
I
Mauricio says…
I’ve been trying many methods but still get “The system cannot find the file specified. ”
I have contacted my host service: they use Isapi Rewrite 3 on Windows 2003. I installed your plugin and tried many versions to .htaccess file.
What should I do?
Thank you very much in advance!
Andy Schmidt says…
Although the blog says that ISAPI Rewrite V2 won’t work, we are using these rules with success:
[ISAPI_Rewrite]
# Don’t rewrite anything that ends with a filename.filetype, and optional query string
RewriteRule (.*/[^/?]+\.\w+(?:\?.*)?)$ $1 [I,L]
# For unknown reasons, categories require a REDIRECT
RewriteRule ^/(category/.*) /index.php/$1 [I,L,RP]
# If not already .php/… or .php?… then inject /index.php/
RewriteCond URL ^(?:(?!\.php/|\.php\?).)*$
RewriteRule /(.*) /index.php/$1 [I,L]
Ryan says…
I just wanted to thank you for this plugin. It saved my sanity when trying to migrate a clients wordpress site from linux to windows.
andy says…
Sorry for the long delay folks.
@Andy Thanks for sharing that!
@Ryan no prob. Glad it helped. Making WordPress and IIS 6 play nice was a pain in my ass for years.
@apar let’s stay focused to the plugin in these comments.
@Amy send me an email through the site if you’re still struggling.
@Mauricio I honestly haven’t work on Windows Server since the initial development/testing of this plugin – which is easily a year now – I’m not sure what that’s about!
apar says…
Andy what are the reason to taking too long process to execute programing language and how would i solve permanently………
i am using to transfer webpage text into database with php .
Brian V. Hunt says…
Andy,
I have been struggling with WP and permalinks for two months. I had had to have my host install IsapiRewrite4 and I had to edit that file with a new rule everytime I added a page or post.
I recently created some drop-down menus in Thesis and they would not work correctly under the rewrite solution I was using.
I finally dumped the rewrite rules from the IsapiRewite4.ini, turned off the rewrite engine in that file, activated your plugin, and created an .htaccess file in the root.
Voila, all rewrites are now working.
THANK YOU!
Brian
Brian V. Hunt says…
And I gave you props here: http://brianvhunt.com/dancing-with-the-stars/
Neo says…
Got it to work on Windows 2003 on IIS 6.0.
Her we go:
1. Install ISAPI Rewrite 3 Lite, just as it is described above.
2. Put this on the C:\Program Files\Helicon\ISAPI_Rewrite3\http.conf file:
# BEGIN WordPress
Options +Followsymlinks
RewriteEngine On
RewriteBase /yoursubdirectoryname/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
CheckSpelling On
# END WordPress
Restart IIS only you’re just installed ISAPI Rewrite. You dont nedd to restart IIS each time you modified this file.
3. DO NOT install the plugin. You dont need it.
4. Enjoy
andy says…
@Neo – Thanks for posting. That’s awesome, if the headers in the latest version of ISAPI Rewrite are sending REQUEST_URI then you’re correct this plugin is a waste of time, and will probably break your site if they removed the X_HTTP_REWRITE header.
dsv210 says…
is there any way of getting wordpress permalinks to work without upgrading to isapi 3?
we have our wordpress blog installed within our root folder on a windows 2003 server using iis6 and isapi 2.11 – we have around 30 websites on the server all using isapi 2.11 for rewrites – upgrading will be really difficult – as all the rules would need to be changed – is there any possible way around this?
thanks
andy says…
@dsv210 I’m not sure, I’m not familiar with your specific install and I avoid Windows hosting for anything PHP related like the plague.
You can achieve the same effect but would need to write some generic rules so you’re not killing your CSS files or image files.
That’s the main issue, ISAPI Rewrite 3.0 supports the -f and -d flags to ignore actual files and directories and only redirect URLs that don’t physically exist on the server.
You could do something like:
RewriteRule !\.(css|jpe?g|gif|png|js|pdf)$ index.php [L]
Where you’ve got that subexpression representing all file names you could have static and just make sure you keep your permalinks extensionless.
Hope that insight helps you out, good luck!
P.S. Best solution is get WP off that host ;]
dsv210 says…
thanks for your suggestion andy – i will run this past my developer
DDF Zone Diaries – Wordpress Pretty Permalinks – Windows IIS 5.1 « DDFZONE says…
[...] We downloaded and installed following Kyle Caufields post: Permalink for WordPress – IIS 6 mod_rewrite FIXED – Free . On Windows XP Pro, IIS is accessed under Computer Management . The Default install location for ISAPI Remote is the Local Directory. We installed the ISAPI_Rewrite3 Filter under the Default Web Directory. If you plan on supporting multiple Web Sites, you will need the Full Version. Hit up the ISAPI Rewrite Support Forums for more detailed support . But we still had 404 errors. We tried every configuration option we could find, and almost gave up since almost every solution was based on Windows Server 2003 and IIS 6 and none on our current system: – OS Version: Windows XP Pro SP 3 - Server Version: Microsoft-IIS/5.1 – MySQL Version: 5.0.17 – PHP Version: 5.2.5 – WordPress Version: 3.0 So, it would be natural to assume that you must run on a server platform for this to work. NOT GIVING UP ! . After more hours, articles and posts we discovered Andy Stratton’s plugin for WP that not only handles the rewrites for our top-level pages but also the child pages under the drop down menus. Get WordPress Permalinks Working with Windows, IIS, and ISAPI Rewrite [...]
Richard Jones says…
FYI, because I spent two days figuring this out:
If you installed ISAPI_Rewrite from the installer package, you should not be manually adding an ISAPI filter to any of your sites, despite what instructions at other places on the Internet tell you.
Doing so will cause problems because the installer package already installs a global ISAPI filter for you. Adding another ISAPI filter on top of this causes the filter rules to run twice, which is not good.
See this link for verification from Helicon Tech: http://www.helicontech.com/forum/7274-HTTP_X_REWRITE_URL_Problem.html
Hope this helps some people.
Jay Greasley says…
Hi Andy,
I just wondered if you have tried this using Helicon Ape instead of/as well as ISAPIRewrite installed on the server?
TIA
Jay
Gary says…
Andy .. I have a question.
I am curious if this plugin will or will not do what I am looking for.
Basically, I want to be able to secure my WordPress website (running on a Windows 2008 server, with IIS7) in the same way that I would, if it was on a Linux server (by adding changes to the .htaccess file on a Linux server).
Example:
1. Copy and paste the following code into your .htaccess file to deny access to your wp-config.php file.
# protect wpconfig.php
order allow,deny
deny from all
# to protect the .htaccess file itself:
order deny,allow
deny from all
2. And things like .. how to protect WordPress from content scrappers
RewriteEngine On
RewriteCond %{HTTP_REFERRER} !^http://(.+\.)?testsite\.com/ [NC]
RewriteCond %{HTTP_REFERRER} !%$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]
3. And how to prevent script injections like this:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]
So ..
I want to know if and how your plugin would allow me to simply update and add the above type of code to the .htaccess file (and have it work on my Windows 2008 Server with IIS7) in the same way it would work on a Linux server.
If your plugin will not do this, can you provide any suggestions?
Thanks,
Gary
andy says…
@Gary my plugin simply sets the proper $_SERVER variables from an IIS6/ISAPI_Rewrite to allow permalinks to work properly. You’d need to contact Helicon’s support about what specific directives will work in the .htaccess file – that’s assuming you’re using Helicon’s ISAPI Rewrite software on your server, which is probably not the case if you’re using IIS 7.
Dexter says…
Hey I am having struggle getting permalink working..
my permalink looks like:
/%year%/%monthnum%/%postname%/
tried various things in .htaccess file:
1) Cant even access the blog – 404
Options +Followsymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Or
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
None of these work. Your plugin is activated. Any ideas whats wrong with my RewriteRule?
andy says…
And you have ISAPI Rewrite 3 installed and working properly? That’s key.
Rex says…
Hi Andy,
When I write something specific, like:
RewriteRule ^about/vision/ /index.php/about/vision [L]
It works specifically for this page.
But when I try something dynamic, like:
RewriteRule ^(.*)/(.*)/ /index.php/$1/$2/ [L]
It doesn’t work at all, just results in a 404.
What is interesting, though, is if I take out the 2nd part, the custom wordpress 404 page doesn’t come up – just the default browser 404. When I leave it, it does.
Any thoughts?
Helpful Tech Link Bouillabaise | Astek Blog says…
[...] Get WordPress Permalinks Working with Windows, IIS, and ISAPI Rewrite Got WordPress running on a Windows server? Then you should have ISAPI Rewrite and the configuration described in this article to get your blog’s permalinks in a much more search engine (and human) friendly format. We also have ISAPI Rewrite working on our server to get pretty URLs working in Drupal. [...]
Shawn says…
I installed your plugin and have isapi 3 running with your code:
# You should be able to use this as a .htaccess file
# with ISAPI Rewrite 3.0
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
the pages seem to all be rewriting to the home page. http://www.imailroom.ca
I have a page http://www.imailroom.ca/test and it stays like this in the url but shows the home page instead
http://www.helicontech.com/cms_articles/wordpress.htm
Paul says…
Andy,
Will this work if WP is not on standard port (80)?
andy says…
I honestly am not sure. I do not have an environment running IIS 6 anymore and most likely MS has dropped support since IIS 7 is out. I no longer work with Windows hosting and WordPress as it’s proved far too troublesome.