Как использовать mod_rewrite в .htaccess для указания на папку вне установки WordPress - PullRequest
0 голосов
/ 11 мая 2019

Задача

Я хотел бы отредактировать файл WordPress .htaccess так, чтобы запросы к www.mydomain.com/nonwordpress были переписаны так, чтобы указывать на папку вне установки WordPress.

Подробнее

Подробно: установка WordPress выполняется на виртуальном хостинге, а домен настроен так, чтобы указывать на установку WordPress:

www.mydomain.com -> / absolute_path_on_server / htdocs / wordpress

Теперь я хотел бы иметь другой каталог «nonwordpress» вне папки «wordpress», который будет перенаправлен следующим образом:

www.mydomain.com / nonwordpress / -> / absolute_path_on_server / htdocs / nonwordpress

Обратите внимание, что другая папка находится вне корневой папки, на которую указывает домен.

Что я пробовал:

Я попытался изменить файл .htaccess в папке «wordpress», добавив следующую строку для переписывания запросов на mydomain.com/nonwordpress:

RewriteRule ^/nonwordpress/(.*)$   /absolute_path_on_server/htdocs/nonwordpress/$1

Весь файл .htaccess теперь выглядит так:

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

К сожалению, это не имеет никакого эффекта, поэтому, когда я захожу на mydomain.com/nonwordpress, вместо содержимого папки появляется ошибка 404 site not found (из WordPress).

Я также попытался добиться перезаписи, заменив абсолютный путь относительным путем:

RewriteRule ^/nonwordpress/(.*)$   ../nonwordpress/$1

Опять та же ошибка.

Любая идея, как это сделать, если это вообще возможно, будет оценена!

1 Ответ

0 голосов
/ 12 мая 2019

Почему это не работает так, как вы ожидаете, см. RewriteRule

Подстановка правила перезаписи - это строка, которая заменяетисходный URL-путь, который соответствует шаблону.Подстановка может быть:

путь к файловой системе
Обозначает расположение в файловой системе ресурса, который должен быть доставлен клиенту. Замены обрабатываются как путь к файловой системе только в том случае, если правило сконфигурировано в контексте сервера (виртуального хоста) и первый компонент пути в замене существует в файловой системе
URL-path
...

Так что это не может работать, когда вы помещаете его в файл .htaccess.Чтобы получить желаемый эффект, вы должны поместить его в основную конфигурацию, обернутую в директиву VirtualHost.

Хотя в вашем случае было бы проще использовать Alias

Alias /nonwordpress/ /absolute_path_on_server/htdocs/nonwordpress/

но, опять же, это также разрешено только в

Контекст: конфигурация сервера, виртуальный хост, каталог

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...