WordPress установлен в подпапке cakephp на оконном сервере iis - PullRequest
1 голос
/ 19 марта 2019

Я установил версию CakePHP 2.6 на Microsoft Windows Server 6.2 Служба IIS 8.5 в этом я установил WordPress блог в подкаталоге в папке приложения

|_ cakePHP
|     |_ app
|     |_ blog
|     |_ lib
|     |_plugins

каждая вещь работает правильно в приложении CakePHP и WordPress блог также работает хорошо, если мы нажмем baseurl / блог / индексная страница появилась правильно.

Но когда мы изменим настройку в настройке parmalink в WordPress и сделаем prety url похожим https://www.baseurl.com/blog/hello-world/ он дает ошибку 404, но работает с простым URL-адресом, как https://www.baseurl.com/blog/?p=1

но мне нужен URL prety parmalink, например https://www.baseurl.com/blog/hello-world/

Я ищу много статей для этого, но также нахожу много, но ни один ответ не работает с оконным сервером с cakephp. Как вы все знаете, .htacces не работает на iis 8, поэтому я создаю файл web.config в корневой папке cakephp

|_ cakePHP
|     |_ app
|     |_ blog
|     |_ lib
|     |_plugins
|     |_web.config

код корневой папки / над web.config

   <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>

                    <!--# Exclude requests already going to /subfolder to avoid an infinite loop-->
                    <rule name="Imported Rule 1" stopProcessing="true">
                        <match url="^blog.*$" />
                        <action type="None" />
                    </rule>


                    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
                        <match url="(.*)" />
                        <conditions>
                            <add input="{HTTPS}" pattern="^OFF$" />
                        </conditions>
                        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
                    </rule>

                    <rule name="Exclude direct access to app/webroot/*" stopProcessing="true">
                        <match url="^app/webroot/c$" ignoreCase="false" />
                        <action type="None" />
                    </rule>
                    <rule name="Rewrite routed access to assets(geet_jewellery,img, css, files, js, favicon)" stopProcessing="true">
                        <match url="^(blog|buyanddelight|crm_geet|geet_jewellery1|geet_jewellery|img|css|files|js|favicon.ico)(.*)$" />
                        <action type="Rewrite" url="app/webroot/{R:1}{R:2}" appendQueryString="false" />
                    </rule>
                    <rule name="Rewrite requested file/folder to index.php" stopProcessing="true">
                        <match url="^(.*)$" ignoreCase="false" />
                        <action type="Rewrite" url="index.php" appendQueryString="true" />
                    </rule>


                </rules>
            </rewrite>
            <httpErrors errorMode="Custom" defaultPath="C:\Inetpub\wwwroot\Indexhome_.htm">
                <error statusCode="403" subStatusCode="4" path="C:\Inetpub\wwwroot\Indexhome_.htm" responseMode="File" />
            </httpErrors>
        </system.webServer>
    </configuration>

и web.config, который находится в корневой папке каталога блога, где все файлы WordPress находятся ниже

 <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
            <rule name="WordPress: https://www.buyanddelight.com/blog" patternSyntax="Wildcard">
                <match url="*"/>
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
                    </conditions>
                <action type="Rewrite" url="index.php"/>
            </rule>


        </rules>

     </rewrite>
  </system.webServer>
</configuration>

Я нашел много ответов, но все они неполные, потому что некоторые из них без cakephp, некоторые без wordpress, а некоторые без отдыха на сервере IIS не работали, поэтому, пожалуйста, помогите мне в этом. надеясь на полный ответ спасибо

Вы также можете обратиться по ссылке ниже, чтобы уточнить мой вопрос, как это может быть достигнуто с помощью .htaccess, но я не могу найти ответ для сервера iis web.config

введите описание ссылки здесь введите описание ссылки здесь

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

наконец, я нашел ответ, который работает для меня ниже, это код, который работает для меня на сервере iis. также создайте файл web.config в папке блога и поместите следующий код

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <defaultDocument>
            <files>
                <clear />
                <add value="index.php" />
            </files>
        </defaultDocument>
        <rewrite>
            <rules>
                <clear />
                <rule name="WordPress Rule" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
            <outboundRules>
                <clear />
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>
0 голосов
/ 19 марта 2019

Хороший вопрос и добро пожаловать в ТАК!В этом случае я бы убрал Wordpress из вашей библиотеки CakePHP.Ваша среда CakePHP станет чрезвычайно уязвимой.В Wordpress есть некоторые недостатки безопасности, которые также повлияют на вашу среду CakePHP, если вы сохраните ее как подпапку.Включение файлов, SQL-инъекция, межсайтовый скриптинг и вредоносные программы часто сочетаются с грязными плагинами и темами.

...