Итак, я работаю за кулисами над установкой Apache / WordPress и интегрирую целевые страницы, которые используют ресурсы, отличные от тех, которые представлены в теме, используемой WordPress. Моя проблема заключается в обходе универсального индекса. php.
Это мои директивы:
# Remove trailing slash & .php Extension
RewriteEngine On
RewriteCond ^filename !-d
RewriteRule ^(.*)/$ /$1 [R=301]
RewriteCond ^filename.php !-f
RewriteRule ^([^\.]+)$ $1.php [NC, L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^filename.php - [L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Я пытаюсь динамически упорядочить мои директивы Apache в способ, который допускает следующее поведение:
- Быть исключением из правила всеобщего доступа, требуемого WordPress для правильной работы
- Удалите
.php
из filename
в URL - Перенаправить на
filename
вместо filename.php
, если URL-адрес будет введен с конечным знаком sh
Код, как он существует сейчас, почти работает, с какой-то фанкой побочные эффекты.
Первый - № 3; перенаправление с концевых подключений sla sh в .php
Это приводит ко второй проблеме, нарушающей постоянные ссылки в WordPress. https://example.com/newfile/
становится https://example.com/newfile.php
- что не так в WordPress.
Я уверен, что правильное сочетание регулярных выражений и директив может это сделать, но я просто не уверен, как сформировать запрос в Google, так что я вас всех спрашиваю. У кого-нибудь есть решение?