Как я принимаю только внутренние перенаправления и игнорирую все остальные запросы? - PullRequest
0 голосов
/ 19 июня 2011

У меня есть развертывание WordPress, и я хочу игнорировать все внешние обращения к ресурсам, которые существуют (например, файлы и каталоги), но я хочу принять все внутренние перенаправления. Идея состоит в том, чтобы не показывать внешним пользователям, что /wp* существует. Я знаю, что мне придется переименовать wp-контент, чтобы это работало (а также настроить некоторые вещи в wp-config.php, но суть:

Как мне настроить мой файл .htaccess для приема только внутренних перенаправлений и игнорирования всех других запросов?

Я думаю, что где-то есть %{ENV_VAR}, который позволил бы мне создать RewriteCond, но я не смог найти его в документации Apache.

Ответы [ 3 ]

1 голос
/ 19 июня 2011

Сделайте внешний доступ первым правилом и сделайте его неудачным. Затем выполните внутренние перенаправления после.

RewriteRule ^foo/?.* - [R=404,L]
RewriteRule ^bar/(.*) foo/$1 [L]
1 голос
/ 20 июня 2011

Я попробовал и IVA, и предложенные Хакре методы.Они не работали на то, что я пытался сделать.То, как я это понял, было похоже на то, что предложил Хакре, но вместо определения моей собственной переменной я использую уже определенную: %{ENV:REDIRECT_STATUS}.Сделайте что-то похожее на это:

  # If the resource requested is a `wp*` file or directory AND it's NOT from a redirect 
  # (notice that the 'match' is an empty string, poop to a 403.
  RewriteCond %{REQUEST_FILENAME} wp-.*$ [NC]
  RewriteCond %{ENV:REDIRECT_STATUS} ^$
  RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
  RewriteCond %{REQUEST_FILENAME} -d [NC]
  RewriteRule .* - [F,L]
0 голосов
/ 19 июня 2011

mod_rewrite поддерживает переменные окружения . Для RewriteCond обозначения %{ENV:variable}, и вы можете установить их в RewriteRule с флагом env|E=VAR:VAL'. Сделано, работает.

Чтобы вернуть обычный 404, чтобы «спрятать» вещи, вы должны реализовать свою собственную обработку внутри wordpress. Например. отправьте их в маскируемый запрос 404 / Файл не найден в worpdress, чтобы он возвратил страницу с ошибкой 404.

Однако вы должны знать, что вы делаете. Например. некоторые плагины не будут работать с настройками, которые вы хотите выполнить, поскольку предварительное условие заключается в том, что клиент должен иметь возможность отправлять запросы в местоположения /wp-content и /wp-admin.

Кроме того, вы не сможете скрыть, что ваш сайт работает с WordPress. Файлы Javascript для примеров должны быть доступны. Вам потребуется сопоставить их с новыми URL-адресами как в .htaccess, так и с фильтрацией выходных данных, чтобы выполнить фактическое сопоставление файлов.

Даже если вы сделаете это (например, переписав URL-адреса через выходной буфер), вы получите схему, которая сделает видимым, что вы используете WordPress.

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