gpt4 book ai didi

php - .htaccess 到 web.config 以进行 url 重写和重定向

转载 作者:搜寻专家 更新时间:2023-10-31 21:26:19 25 4
gpt4 key购买 nike

我有一个托管在 Windows 服务器上的域 xyz.com。

xyz.com 的代码是用 PHP 编写的(以前是用 ASP.NET 编写的)。数据库是 MySQL(以前是在 SQL 服务器中)。

现在,在用 PHP 重新开发了整个网站之后,我开始知道 .htaccess 将无法在 Windows 服务器上运行。我必须使用 web.config

这是我在本地用 PHP 重新开发网站时使用的 .htaccess 代码:

RewriteRule index.html index.php

RewriteRule news.html news.php
RewriteRule search-results.html search-results.php

RewriteRule ^([A-Za-z0-9_\-]+).html$ pages.php?pageid=$1&%{QUERY_STRING} [ne]

一件奇怪的事发生了

当我在 web.config 中添加以下代码行时,它运行良好

    <rules>
<clear />
<rule name="Redirect to google.com" stopProcessing="true">
<match url="^google$" />
<action type="Redirect" url="http://www.google.com/" appendQueryString="false" />
</rule>
</rules>

上面的代码将我重定向到 google.com,这意味着重写模块已经启用

但是当我将下面提到的代码添加到 web.config 时

 <rules>
<rule name="REWRITE_TO_PHP">
<match url="^(.+).html$" />
<conditions logicalGrouping="MatchAll" />
<action type="Rewrite" url="pages.php?pageid={R:1}" />
</rule>

它给我错误:

HTTP 错误 500.19 - 内部服务器错误请求的页面无法访问,因为该页面的相关配置数据无效。

谁能帮我创建等效的 web.config 代码?

最佳答案

试试这个。

在你的 web.config 文件中,找到

<rewrite>
<rules>

This 并将代码放入其中。 <rewrite><rules> .. codes here... </rules></rewrite>标签。

<rule name="rule 1y">
<match url="index.html" />
<action type="Rewrite" url="index.php" />
</rule>
<rule name="rule 2y">
<match url="news.html" />
<action type="Rewrite" url="news.php" />
</rule>
<rule name="rule 3y">
<match url="search-results.html" />
<action type="Rewrite" url="search-results.php" />
</rule>
<rule name="rule 4y">
<match url="^([A-Za-z0-9_\-]+).html$" />
<action type="Rewrite" url="pages.php?pageid={R:1}&amp;%{QUERY_STRING}" />
</rule>

所以文件看起来像这样:

<?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>
<rewrite>
<rule name="rule 1y">
<match url="index.html" />
<action type="Rewrite" url="index.php" />
</rule>
<rule name="rule 2y">
<match url="news.html" />
<action type="Rewrite" url="news.php" />
</rule>
<rule name="rule 3y">
<match url="search-results.html" />
<action type="Rewrite" url="search-results.php" />
</rule>
<rule name="rule 4y">
<match url="^([A-Za-z0-9_\-]+).html$" />
<action type="Rewrite" url="pages.php?pageid={R:1}&amp;%{QUERY_STRING}" />
</rule>
</rewrite>
</system.webServer>
</configuration>

注意:请不要直接用您的 web.config 文件替换代码。只需将所需的行放入您的 web.config 文件中。

关于php - .htaccess 到 web.config 以进行 url 重写和重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35456222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com