Зависимости : я работаю на сайте 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 без расширений. Это не работает.
У кого-нибудь есть рабочее решение для этой конкретной ситуации?