【问题标题】:web.config url rewrite on IIS server to hide .php and .htm extensionIIS 服务器上的 web.config url 重写以隐藏 .php 和 .htm 扩展名
【发布时间】:2014-08-08 21:58:20
【问题描述】:

这是我第一次使用 web.config 进行 url 重写来隐藏在 IIS 服务器上运行的文件的 .php 和 .htm 扩展名。通过谷歌搜索,我得到了隐藏 profile.htm 和 contact.php 扩展名的代码。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
      <rules>
        <rule name="RewriteRules">
          <match url="profile.htm$" />
          <action type="Rewrite" url="profile" />
          <match url="contact.php$" />
          <action type="Rewrite" url="contact" />
        </rule>
      </rules>
    </rewrite>
</system.webServer>
</configuration>

但是,在我将这个 web.config 文件添加到服务器的根目录后,它给了我“500 内部服务器错误”消息,并且没有任何页面工作。是否有任何语法错误或其他问题?我可以寻求帮助来解决这个问题吗?

另一个问题:我还想在 .htm 或 .php 代码中链接不同的页面以隐藏 .htm 或 .php 扩展名。例如,我以前使用联系人作为 href 链接,现在我想将其指向一个没有扩展联系人的目录。 url rewrite 可以为此做同样的工作还是我需要做其他事情?

谢谢!

【问题讨论】:

    标签: php url-rewriting web-config


    【解决方案1】:

    以下是您的操作方法(它不使用重写映射 - 仅规则,适用于少量重写/重定向):

    此规则将 SINGLE EXACT 重写(内部重定向)/yourpage 到 /yourpage.html。浏览器中的 URL 将保持不变。

    <system.webServer>
    <rewrite>
        <rules>
            <rule name="SpecificRewrite" stopProcessing="true">
                <match url="^yourpage$" />
                <action type="Rewrite" url="/yourpage.html" />
            </rule>
        </rules>
    </rewrite>
    

    301 重定向(永久重定向),其中 URL 将在浏览器中更改

    <system.webServer>
    <rewrite>
        <rules>
            <rule name="SpecificRedirect" stopProcessing="true">
                <match url="^yourpage$" />
                <action type="Redirect" url="/yourpage.html" />
            </rule>
        </rules>
    </rewrite>
    

    如果存在带有 .html 扩展名的此类文件,则尝试对任何 URL 执行此类重写(即,对于 /yourpage,它将检查 /yourpage.html 是否存在,如果存在则进行重写):

    <system.webServer>
    <rewrite>
        <rules>
            <rule name="DynamicRewrite" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{REQUEST_FILENAME}\.html" matchType="IsFile" />
                </conditions>
                <action type="Rewrite" url="/{R:1}.html" />
            </rule>
        </rules>
    </rewrite>
    

    【讨论】:

    • 我尝试了第三种解决方案,它仍然给了我 500 内部服务器错误。我没有尝试前两种解决方案,因为我想做相反的事情:隐藏 .php 或 .html 扩展名。我可以得到进一步的帮助吗?谢谢!
    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 2011-10-22
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    相关资源
    最近更新 更多