我使用PHP,MySQL和Apache在我的本地开发了一个应用程序,它有一个包含这个的.htaccess文件:
#Setting the default handler.
DirectoryIndex home.do
<IfModule mod_mime.c>
#Supporting .do extensions
AddType application/x-httpd-php .do
</IfModule>
<IfModule mod_rewrite.c>
#Removing .do file extension if necessary
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.do -f
RewriteRule ^(.*)$ $1.do
</IfModule>
但我告知我的客户的Web服务器是IIS,我必须使用web.config文件而不是.htaccess。有人可以指导我完成这个吗?
答案 0 :(得分:4)
这可能被视为作弊,但我们使用ISAPI_Rewrite,它允许您只使用IIS的.htaccess文件。如果您可以将它们放在服务器上,则无需翻译任何内容。
答案 1 :(得分:3)
请注意,这只适用于IIS7上的IIS7和不。还要安装并启用this requires FastCGI to be setup和the URL Rewriting module。这些是您的主机可以为您验证的内容。如果上述所有情况都属实,那么以下文件应该可以解决问题(您可能需要调整路径,但我认为如果您向他们提供此示例文件,您的主机将能够为您执行此操作。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
<sectionGroup name="system.webServer">
<sectionGroup name="rewrite">
<section name="rewriteMaps" overrideModeDefault="Allow" />
<section name="rules" overrideModeDefault="Allow" />
</sectionGroup>
</sectionGroup>
</configSections>
<system.webServer>
<!-- Mapping the .do extension to the PHP ISAPI module -->
<handlers>
<!-- the following line is very specific to your host
please check the module name and the scriptProcessor
path with the system administrator! basically this is
the same as
http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/#EnableFastCGI
only in .config format. -->
<add name="MaskDoAsPHP" path=".do" verb="GET,HEAD,POST,DEBUG" modules="FastCgiModule" scriptProcessor="C:\PHP\php-cgi.exe" />
</handlers>
<!-- Setting the default handler. -->
<defaultDocument>
<files>
<clear />
<add value="home.do" />
</files>
</defaultDocument>
<rewrite>
<rules>
<rule name="Removing do extension" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="{R1}.do" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
答案 2 :(得分:2)
IIS7及更高版本可以使用 URL重写模块导入Apache .htaccess规则。