Конвертируйте IIS web.config в Apache .htaccess - PullRequest
1 голос
/ 30 декабря 2011

Я видел много вопросов о том, как перейти от .htaccess к web.config. Похоже, вопросов о том, как перейти в другую сторону , от web.config к .htaccess не так много.

Вот файл конфигурации, который мне нужно преобразовать в файл .htaccess:

<?xml version="1.0" encoding="UTF-8"?>
 <configuration>
  <system.webServer>
    <rewrite>
        <rules>
            <rule name="Imported Rule 1" stopProcessing="true">
                <match url="^(.*)$" ignoreCase="false" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{R:1}" pattern="^(cms|css|files|images|js|themes|index\.php)" negate="true" />
                </conditions>
                <action type="Rewrite" url="/index.php/{R:1}" />
            </rule>
        </rules>
        <rewriteMaps>
            <rewriteMap name="login">
                <add key="http://server/cms/index.php?S=0&amp;D=cp&amp;C=login&amp;M=login_form" value="http://server/login" />
            </rewriteMap>
        </rewriteMaps>
    </rewrite>
    <httpErrors>
        <remove statusCode="403" subStatusCode="-1" />
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="/error404" responseMode="ExecuteURL" />
        <error statusCode="403" prefixLanguageFilePath="" path="/error403" responseMode="ExecuteURL" />
    </httpErrors>
 </system.webServer>
</configuration>

Есть некоторые части этого, в которых я не уверен, и именно это мешает мне понять это самостоятельно.

Первая - это часть условий первого правила. Я не уверен, как преобразовать это в правило .htaccess.

Вторым является раздел «httpErrors». У меня, вероятно, просто пердит мозг, но я не могу вспомнить, как это сделать в файле .htaccess.

Любая помощь очень ценится!

Приветствие.

1 Ответ

1 голос
/ 31 декабря 2011

Здесь есть все, кроме RewriteMap, чего нельзя сделать в .htaccess

RewriteEngine On
RewriteBase /

#rule name="Imported Rule 1" stopProcessing="true"
RewriteCond $1 !^/(cms|css|files|images|js|themes|index\.php) [NC]
RewriteRule ^(.*)$ /index.php/$1 [L]

#equivalent of your rewritemap rule, which you cannot do in htaccess
RewriteCond %{HTTP_HOST} ^server$
RewriteCond %{QUERY_sTRING} ^S=0&D=cp&C=login&M=login_form$ [NC]
RewriteRule ^cms/index\.php$ /login [L,R=301]


#httpErrors will server up error404 as file: change to html if that is file you want
ErrorDocument 404 /error404
ErrorDocument 403 /error403
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...