I transferred a website from a linux host to windows server. When I changed http access rules in the web.config; images and css are not displayed on web.
Web.config file:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="rule 1R" stopProcessing="true">
<match url="^(.*)$" />
<action type="Rewrite" url="/index.php/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
And my website url is : http://www.magazzinopneumatici.it/
Related
I have developed a project by nexjs which their backed is IIS and all these are working properly.
I have an URL address like this :
dastshafa.ir/product/2/آویشن
It works well until I wasn't refreshing a page.
the browser throws an error:
404 - File or directory not found.
I was applied this web.config snipped:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReactRouter Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{QUERY_STRING}" pattern="^product/\[0-9]{1,}/\.*$" />
</conditions>
<action type="Rewrite" url="dastshafa.ir/{C:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
But my problem is not fixed yet.
How can I fix it?
It seems it was correlated to IIS URL rewrite issues. fortunately, I succeed to do this using this snipped, that is persist in a web.config file:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReactRouter Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{PATH_INFO}" pattern="\/product\/(\d+)\/.*" />
</conditions>
<action type="Rewrite" url="product/[productId]/[productName].html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
thanks to https://dnnsupport.dnnsoftware.com/hc/en-us/articles/360005303894-Creating-a-rewrite-rule-with-IIS-and-the-web-config
https://testitnow.in/edgar is the website which is built on ASP. I configured auto redirect in IIS but still, if I type testitnow.in in the web browser I'm getting the following error - "403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied."
But if I type https://testitnow.in or www.testitnow.in it is redirecting to https://testitnow.in. Kindly help me to fix this issue.
Try to update your web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
I have a webpage hosted on a shared Microsoft-IIS/8.5 server.
I don't have the admin privileges on that server, and I don't have access to its configuration files, so I can't really make sure that the URL rewrite module or the HTTP redirect element are correctly installed / set up.
I would like to establish a redirection from a folder named old_folder to a folder named new_folder (both at the root for me, i.e., at http://sharedhosting.com/myusername/).
I placed in the root folder the following web.config file:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
<sectionGroup name="system.webServer">
<sectionGroup name="rewrite">
<section name="rules" overrideModeDefault="Allow" />
</sectionGroup>
</sectionGroup>
</configSections>
<system.webServer>
<rewrite>
<rules>
<rule name="attempt" stopProcessing="true" enabled="true">
<match url="^old_folder/$" />
<action type="Redirect" url="new_folder/" redirectType="Permanent"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
But all I can get is a 403 - Forbidden: Access is denied. (if I leave an empty old_folder) or a 404 - File or directory not found. (if I erase it).
I tried using the HTTP Redirect, by placing in old_folder a Web.config file containing
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpRedirect enabled="true" destination="http://sharedhosting.com/myusername/new_folder/" />
</system.webServer>
</configuration>
But that didn't worked either.
I know that my Web.config files are read (I can get 500 errors if there is an error in them). I suspect that the URL rewrite is installed, since, for instance, http://sharedhosting.com/myusername/folder is rewritten to http://sharedhosting.com/myusername/folder/ (i.e., with a slash) if the folder folder exists.
Is my rule correct? Does my host prevent me from redirecting? If yes, how can I tell?
I added a <clear /> after the <rules> tag to discard all the other rewriting rules, but it still isn't redirecting anything.
What am I missing?
LAST EDIT BEFORE THE BOUNTY EXPIRES
To clarify, my question is "How to understand why the server isn't correctly interpreting / ignoring my instructions?".
We came to the conclusion that it was probably my server that was weirdly set-up, I'm precisely trying to "revert-engineer" that and to detect what's making the server ignore the redirect / rewrite rules.
You can achieve the same thing by using the HttpHandlers , so i'm presuming that you can access the both Old_folder and New_folder directly in the browser .
Here is a sample httphandlers , you can do in this way :
youname.Handlers
{
public class RedirectHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.Status = "301 Moved Permanently";
string url = context.Request.Url.ToString().Replace("old_folder", "new_folder");
context.Response.AddHeader("Location", url);
}
public bool IsReusable
{
get { return false; }
}
}
}
In web_config add the handler as follows:
system.web>
<httpHandlers>
<add verb="*" path="xxx/*.*" type="yourname.Handlers.RedirectHandler"/>
</httpHandlers>
</system.web>
Using IIS Url_rewriting :
<?xml version="1.0"?>
<configuration>
<system.webServer>
<rewrite>
<rewriteMaps>
<rewriteMap name="yourRedirects">
<add key="/yourroot/old_folder/" value="/otherdir/new_folder" />
</rewriteMap>
</rewriteMaps>
<rules>
<rule name="RedirectRule" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{yourRedirects:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="http://www.yourdomain.com{C:1}" appendQueryString="False" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
I think this can be done with a simple rewrite rule.
<rule name="ToNewFolder" stopProcessing="true">
<match url="^old_folder/(.*)" ignoreCase="true" />
<action type="Rewrite" url="new_folder/{R:1}" />
</rule>
The above rule will send all requests to the new folder, but keeps the old url with old_folder in it. If you want the url to change it's display to new_folder in it, use
<rule name="ToNewFolder" stopProcessing="true">
<match url="^old_folder/(.*)" ignoreCase="true" />
<action type="Redirect" url="new_folder/{R:1}" />
</rule>
Tested it on my local machine with folders, subfolders an requests with a QueryString. I hope this works on shared hosting also.
I have a Wordpress hosted on azure, that I have move from www.mydomain.com to old.mydomain.com,
on www.mydomain.com I make a new landing page that inform of what I want to inform and give a link to the "old" wordpress,
to avoid loosing seo (and keep wp info alive) I made the next web.config
<?xml version="1.0"?>
<configuration>
<system.webServer>
<httpRedirect enabled="true" destination="http://old.mydomain.com" httpResponseStatus="Permanent" />
</system.webServer>
<location path="www.mydomain.com">
<system.webServer>
<httpRedirect enabled="false" />
</system.webServer>
</location>
</configuration>
redirect works perfectly, but it also redirect me www.mydomain.com to old.mydomain.com
How can I do it in web.config this no-redirect-the-root ??
I have try also the :
<location path="index.html">
<system.webServer>
<httpRedirect enabled="false" />
</system.webServer>
</location>
but the result is the same, everything gets redirect to old.mydomain.com
You can try to use the Rewrite module of IIS, please consider the following configuration:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Root rule" stopProcessing="true">
<match url="^$" />
<action type="None" />
</rule>
<rule name="redirect rule" stopProcessing="true">
<match url="^(.*)$" />
<action type="Redirect" url="http://www.example.com/{R:0}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
I am new to Url rewrite rules so any help would be gratefully appreciated.
Looking to create a IIS Url rewrite that will handle any of the following
http://localhost/homepage/contact-us.aspx -> http://localhost/contact-us.aspx
http://localhost/homepage/about-us.aspx -> http://localhost/about-us.aspx
Any ideas?
I haven't tested this but I think you would have something like this in your web.config file.
You can edit the web.config file and then go into IIS and the rule should show up if you want to test it.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="rewriterule1" enabled="true" stopProcessing="false">
<match url="homepage/(.*)" />
<action type="Rewrite" url="http://localhost/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>