У меня есть настройка, где статический веб-сайт находится в корневой папке, а Wordpress находится в подпапке. Поэтому мне нужно переписать все запросы в index.html, а все запросы, связанные с Wordpress, должны идти в подпапку. Я добиваюсь этого с помощью двух файлов .htaccess: один в корневой папке, а другой в подпапке Wordpress.
Корневой .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-.+
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteRule (wp-.*)$ /wordpress/$1 [L]
# Rewrite rule for frontend
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
Подпапка Wordpress .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
Это работает, но когда я пытаюсь открыть его, /wp-admin/
меня перенаправляют на /wp-login.php?redirect_to=https%3A%2F%2Fwww.example.com%2Fwordpress%2Fwp-admin%2F&reauth=1
страницу, на которую в URL-адресе отображается подпапка.
Есть ли способ скрыть подпапку?
решение1
Чтобы скрыть подпапку в URL для запросов, связанных с WordPress, вы можете немного изменить настройки. Вы можете оставить корневой файл .htaccess как есть, но внести некоторые изменения в файл .htaccess в подпапке WordPress. Вот как это можно сделать:
- Измените файл .htaccess в подпапке WordPress (
e.g.,
/wordpress/) следующим образом:
Добавьте эту строку, чтобы предотвратить отображение подпапки в URL-адресе
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wordpress/index.php [L]
Добавляя условие RewriteCond %{REQUEST_URI} !^/wordpress/, вы гарантируете, что запросы к папке /wp-admin/ не будут затронуты этим правилом перезаписи, поэтому подпапка не будет отображаться в URL-адресе для запросов, связанных с WordPress.
В корневом файле .htaccess вы можете упростить правила перезаписи следующим образом
RewriteEngine включенindex.html
:Исключить запросы к подпапке /wordpress/ из этого правила
RewriteCond %{REQUEST_URI} !^/wordpress/
Переписать правило для интерфейса
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L]
С этими изменениями запросы, связанные с WordPress, будут по-прежнему обрабатываться подпапкой WordPress, и подпапка не будет отображаться в URL при доступе к /wp-admin/. Другие запросы будут перезаписываться в index.html в корневой папке, как и раньше.