Question

I am trying to remove the extension .php from the url, so that mysite.com/home.php can work as mysite.com/home.

I am hosting my site on 1and1.com and I asked them if the Rewrite engine was turned on, and they said that for the windows server running IIS 7.5 that it is not turned on and that I could turn it on with some code in the web.config file.

I have not been able to find code that turns the rewrite rules on.

Below is the what I tried to use to rewrite urls. But I get an Error 500.19.

Is there really a way to turn rewriting on in the web.config file?

web.config file

<?xml version="1.0" encoding="UTF-8"?>
<configuration>    
    <system.webServer>
        <directoryBrowse enabled="false" />
        <defaultDocument>
            <files>
                <clear />
             <add value="home.php" />
             <add value="index.html" />
            </files>
        </defaultDocument>
        <rewrite>
            <rules>
                <rule name="rewrite php">
                  <!--Removes the .php extension for all pages.-->
                  <match url="(.*)" />
                  <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    <add input="{REQUEST_FILENAME}" negate="true" pattern="(.*).php" />
                  </conditions>
                  <action type="Rewrite" url="{R:1}.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>  
</configuration>
Was it helpful?

Solution

Found out that 1and1.com had the rewrite engine turned off for the web.config file.

But I found out that I can use the web.config file to redirect to a homepage while using the .htaccess file and it's rewrite rules to remove the .php extension from the url.

web.config file

<?xml version="1.0" encoding="UTF-8"?>
<configuration>    
    <system.webServer>
        <directoryBrowse enabled="false" />
        <defaultDocument>
            <files>
                <clear />
             <add value="home.php" />
             <add value="index.html" />
            </files>
        </defaultDocument>

    </system.webServer>  
</configuration>

.htaccess file

AddHandler php5-script .php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.php$
RewriteRule ^(.*)$ $1.php [L]

Both file are located in the root. And works perfectly.

OTHER TIPS

In 1and1 windows hosting they have restricted the redirect and rewrite rules in web.config. So if you use the <rewrite> tag there you will get application level error. See -

https://help.1and1.com/hosting-c37630/scripts-and-programming-languages-c85099/aspnet-c39624/aspnet-application-restrictions-for-hosting-packages-a603259.html

https://help.1and1.com/hosting-c37630/scripts-and-programming-languages-c85099/aspnet-c39624/permitted-webconfig-file-settings-a617208.html

So either implement it from .htaccess file or change your hosting.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top