Setting up redirect in web.config file
- Open web.config in the directory where the old pages reside
Then add code for the old location path and new destination as follows:
<configuration> <location path="services.htm"> <system.webServer> <httpRedirect enabled="true" destination="http://domain.com/services" httpResponseStatus="Permanent" /> </system.webServer> </location> <location path="products.htm"> <system.webServer> <httpRedirect enabled="true" destination="http://domain.com/products" httpResponseStatus="Permanent" /> </system.webServer> </location></configuration>
You may add as many location paths as necessary.
You probably want to look at something like URL Rewrite to rewrite URLs to more user friendly ones rather than using a simple httpRedirect
. You could then make a rule like this:
<system.webServer> <rewrite> <rules> <rule name="Rewrite to Category"> <match url="^Category/([_0-9a-z-]+)/([_0-9a-z-]+)" /> <action type="Rewrite" url="category.aspx?cid={R:2}" /> </rule> </rules> </rewrite></system.webServer>
In case that you need to add the http redirect in many sites, you could use it as a c# console program:
class Program{ static int Main(string[] args) { if (args.Length < 3) { Console.WriteLine("Please enter an argument: for example insert-redirect ./web.config http://stackoverflow.com"); return 1; } if (args.Length == 3) { if (args[0].ToLower() == "-insert-redirect") { var path = args[1]; var value = args[2]; if (InsertRedirect(path, value)) Console.WriteLine("Redirect added."); return 0; } } Console.WriteLine("Wrong parameters."); return 1; } static bool InsertRedirect(string path, string value) { try { XmlDocument doc = new XmlDocument(); doc.Load(path); // This should find the appSettings node (should be only one): XmlNode nodeAppSettings = doc.SelectSingleNode("//system.webServer"); var existNode = nodeAppSettings.SelectSingleNode("httpRedirect"); if (existNode != null) return false; // Create new <add> node XmlNode nodeNewKey = doc.CreateElement("httpRedirect"); XmlAttribute attributeEnable = doc.CreateAttribute("enabled"); XmlAttribute attributeDestination = doc.CreateAttribute("destination"); //XmlAttribute attributeResponseStatus = doc.CreateAttribute("httpResponseStatus"); // Assign values to both - the key and the value attributes: attributeEnable.Value = "true"; attributeDestination.Value = value; //attributeResponseStatus.Value = "Permanent"; // Add both attributes to the newly created node: nodeNewKey.Attributes.Append(attributeEnable); nodeNewKey.Attributes.Append(attributeDestination); //nodeNewKey.Attributes.Append(attributeResponseStatus); // Add the node under the nodeAppSettings.AppendChild(nodeNewKey); doc.Save(path); return true; } catch (Exception e) { Console.WriteLine($"Exception adding redirect: {e.Message}"); return false; } }}