首页 > 解决方案 > 将 web.config 规则转换为 .htaccess

问题描述

我必须将另一组 web.config 规则转换为 .htaccess,并且我想确保转换正确。目前我无法测试它是否有效,因此我的理由是堆栈溢出。如果有人可以通过确认我的转换或帮助我找出我错过的地方来帮助我。谢谢!

webn.config 规则

<rule name="Rewrite to controller.php" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^(developers.)" />
    <add input="{REQUEST_URI}" pattern="^/([_0-9a-z-]+)/controller.php" />
  </conditions>
  <action type="Rewrite" url="\controller.php" />
</rule>

<rule name="Rewrite to controller.php 2" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^(developers.)" />
    <add input="{REQUEST_URI}" pattern="^/([_0-9a-z-]+)/([_0-9a-z-]+)/controller.php" />
  </conditions>
  <action type="Rewrite" url="\controller.php" />
</rule>

<rule name="Topics" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^(developers.)" />
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    <add input="{PATH_INFO}" pattern="^(/404|/js|/css|/img)+" negate="true" />
  </conditions>
  <action type="Rewrite" url="\index.php" />
</rule>

.htaccess 文件编辑我找到了 http 主机

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(developers.)
RewriteRule ^/([_0-9a-z-]+)/controller.php /developers/controller.php

RewriteCond %{HTTP_HOST} ^(developers.)
RewriteRule ^/([_0-9a-z-]+)/([_0-9a-z-]+)/controller.php /developers/controller.php

RewriteCond %{HTTP_HOST} ^(developers.)
RewriteRule ^(/404|/js|/css|/img)+ /developers/index.php

标签: php.htaccessweb-config

解决方案


RewriteEngine On
RewriteRule ^([_0-9a-z-]+)/controller.php /developers/controller.php
RewriteRule ^([_0-9a-z-]+)/([_0-9a-z-]+)/controller.php /developers/controller.php
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(/404|/js|/css|/img)+ /developers/index.php

推荐阅读