Перенаправьте расширение «.php» на URL-адрес без расширения на странице WordPress в Azure через web.config. - PullRequest
0 голосов
/ 02 октября 2019

Зависимости : я работаю на сайте WordPress в службе приложений Azure.

Цель : Если кто-то посещает:

example.com/my-page.php

Затем они перенаправляются на:

example.com/my-page/

ИЛИ (без обратной косой черты):

example.com/my-page

Я просмотрел StackOverflow, чтобы найти решение, но ничего не было специфично для WordPress / Azure и, следовательно, не работало.

Ответ прост через Apache и файл .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Но когда я пытаюсь отредактировать файл web.config с помощью чего-либо, кроме того, что WordPress объявляет в качестве перенаправления по умолчанию, все становится сложнее.

Вот что у меня сейчас есть в моем web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="WordPress: https://example.com" 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>
        <rule name="hide .php extension" stopProcessing="true">
          <match url="(.*)" />
            <conditions>
              <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
              <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            </conditions>
          <action type="Rewrite" url="{R:1}.php" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Первое правило перенаправляет все запросы через index.php для WordPress. Второе правило, которое я нашел в Интернете, помогло преобразовать все запросы, оканчивающиеся на .php, в URL без расширений. Это не работает.

У кого-нибудь есть рабочее решение для этой конкретной ситуации?

1 Ответ

0 голосов
/ 09 октября 2019

Похоже, у вас есть обработанный файл .htaccess для Apache, так что вы можете попробовать обратиться к блогу Конвертировать .htaccess в web.config , чтобы реализовать ваши потребности. А чтобы следовать разделу Как использовать IIS Manager для импорта файлов .htaccess блога, вы можете проще использовать инструмент URL Rewrite > Import Rules > Import mod_rewrite Rules IIS Manager для его автоматического преобразования.

Надеждаэто помогает.

...