Я настраиваю систему кэширования для своего блога (не WordPress) и хочу сохранить кэшированные файлы в папке posts/
, поэтому я не заполняю свою корневую папку файлами сообщений.
У меня есть файл с именем post.php
, который создает эти файлы сообщений, если слаг соответствует фактическому сообщению на другом веб-сайте (я проверяю это с помощью WordPress REST API). Поэтому, когда я захожу на mywebsite.com/slug-to-post
и этот URL не соответствует ни одному из моих файлов на корневом уровне, он возвращается к post.php
с использованием FallbackResource post.php
в .htaccess
, а post.php
использует этот слаг для создания кэшированной версии и хранит его, но поскольку может быть тысячи сообщений, я не хочу, чтобы файлы сохранялись на корневом уровне, а в posts/name-of-the-file
.
Так что этот файл будет доступен через mywebsite.com/posts/slug-to-post
, но для целей SEO я все еще хочу, чтобы он был mywebsite.com/slug-to-post
.
Что я должен написать в моем .htaccess для восстановления любого неизвестного файла в папке posts/
, и если файл там не существует, снова вернуться к post.php
, который хранится на корневом уровне?
Ничто из того, что я пробовал, до сих пор не сработало.
Для кеширования файлов я использую код, представленный здесь: https://phppot.com/php/php-cache-for-dynamic-web-pages/
ОБНОВЛЕНИЕ: Это мой текущий .htaccess
файл:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/posts/$1 -f
RewriteRule ^([^/]+\.php)$ /posts/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^/]+\.php$ post.php [L]