URL 重写 web.config 在域和页面之间添加假文件夹

URL Rewrite web.config add fake folder between domain and pages

只是一个简单的问题。 我有一个域 website.com,此页面有以国家代码命名的特定页面。

我在我的 web.config 文件上创建了以下规则 URl 重写:

 <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
    <match url= "^([^/]+)/?$"/>          
      <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
     <action type="Rewrite" url="ContactUs.php?lang={R:1}" />
  </rule>

页面在 PHP 中生成,名为 lang 的变量用于显示所选页面并存在于 URL。

我想在我的域和页面之间添加 "contact/"

我有以下规则:

<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
   <match url="contact([^/]+)/?$"/>
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
    <action type="Rewrite" url="ContactUs.php?lang={R:1}"/>
 </rule>

任何人都可以向我解释我不明白的地方, 谢谢

你的正则表达式有点错误。

^contact\/([a-z]+)\/?$

假设您所有的国家/地区代码都是字母,那应该可以满足您的需要。

您要先将 website.com/uk 重定向到 website.com/contact/uk 并将 website.com/contact/uk 重写为 ContactUs.php?lang=uk?

如果你想这样做,你可以使用下面的 URL 重写规则:

<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
   <match url="(.*)" />
      <conditions logicalGrouping="MatchAll">
                        <add input="{HTTP_HOST}" pattern="www.sample2.com" />
                        <add input="{REQUEST_URI}" pattern="^/[a-zA-Z]+$" />
      </conditions>
    <action type="Redirect" url="http://{HTTP_HOST}/contact{C:0}" />
 </rule>
              <rule name="RewriteUserFriendlyURL2" stopProcessing="true">
   <match url="(.*)" />
      <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_URI}" pattern="/contact/([a-z]+)" />
      </conditions>
    <action type="Rewrite" url="ContactUs.php?lang={C:1}" />
 </rule>