質問

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>
役に立ちましたか?

解決

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.

他のヒント

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.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top