我正在尝试从网址中删除扩展名.php,以便mysite.com/home.php可以作为mysite.com/home使用。
我正在1and1.com上托管我的网站,我问他们是否打开了Rewrite引擎,并且他们说对于运行IIS 7.5的Windows服务器它没有打开并且我可以打开它web.config文件中的代码。
我无法找到能够改写重写规则的代码。
以下是我尝试用来重写网址的内容。但我收到错误500.19。
是否真的有办法在web.config文件中重写?
web.config文件
<?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>
答案 0 :(得分:4)
发现1and1.com已关闭web.config文件的重写引擎。
但我发现我可以使用web.config文件在使用.htaccess文件时重定向到主页,并且重写规则从URL中删除.php扩展名。
web.config文件
<?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文件
AddHandler php5-script .php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.php$
RewriteRule ^(.*)$ $1.php [L]
两个文件都位于根目录中。而且效果很好。
答案 1 :(得分:-1)
在1and1 windows托管中,他们限制了web.config中的重定向和重写规则。因此,如果您使用<rewrite>
标记,则会出现应用程序级错误。见 -
所以要么从.htaccess文件实现它,要么更改你的主机。