(Я знаю, что безопасность через скрытность не рекомендуется).
Я пытаюсь скрыть тот факт, что использую Wordpress. это Почта полезно, но касается только содержания (вроде). Я заинтересован в том, чтобы произошло следующее:
Пользователь пытается получить доступ к любому URL-адресу с wp*
в виде подстроки через их браузер.
Результат: Перенаправлен на 404 страницу.
Пользователь / администратор блога знает, что для входа в систему им нужно перейти на http://example.com/blogin/
.
Результат: apache перенаправляет их на http://example.com/wp-admin/
.
Если пользователь пытается получить прямой доступ wp-admin
из своего браузера они попадают в # 1.
Результат: Перенаправлен на 404 страницу.
То, что я сделал до сих пор
Я заметил, что при установке WordPress по умолчанию я мог получить доступ к любому из wp*
файлы в (относительном) корневом каталоге установки WP. В частности wp-settings.php
было проблематично, потому что давало информацию о моей настройке. Если бы к нему обратился пользователь, он выдал бы некоторые ошибки PHP и раскрыл бы часть структуры каталогов. Я отредактировал свой файл php.ini, чтобы включить display_errors
выкл. Теперь доступ http://example.com/wp-settngs.php
открывает пустую страницу.
Само по себе это не идеально, поскольку показывает, что wp-settings.php
существуют. Фактически, доступ ко всем разным wp*
файлов можно (с разными результатами). Затем я помещаю в свой файл htaccess следующее:
RewriteEngine On
RewriteBase /
RewriteCond %{PATH_INFO} wp* [NC]
RewriteRule .* - [F]
Это отлично сработало! Что-нибудь с wp*
был перенаправлен на мою пользовательскую страницу 404. Но теперь я не могу получить доступ к своей странице администратора.
Я попытался вставить эту строку в приведенный выше код: RewriteRule ^blogin wp-admin [NC,R,L]
. Это должно было быть сразу после RewriteBase
но это не сработало.
Я попытался сделать:
<Directory /home/example/wp*>
Order Allow, Deny
Allow from example.com
Deny from all
</Directory>
надеясь, что референт с моего сайта (путем переписывания правила) сможет получить доступ к wp-admin, но не кому-то извне. Это тоже не сработало. apache жаловался, что вы не можете использовать эту директиву из htaccess.
Я прочитал документацию по apache; Теоретически я разбираюсь в концепциях, но мне нужна практическая помощь.
РЕДАКТИРОВАТЬ: Я ищу решение, которое использует .htaccess вместо httpd.conf, поскольку моя конкретная настройка делает использование httpd.conf несовместимым.
TL; DR; Невозможно скрыть WordPress, используя только директивы в вашем файле .htaccess.
Теперь идет рассказ о горе и ужасе. Наш друг, fbh, был прав, говоря о сложности скрытия WordPress, не для желтобрюхих трусов. Arr! Вот подробности этого (не) приключения. Будьте осторожны!
Я один из тех парней, которые любят все идеально. я буду проводить тратить время на то, чтобы что-то было «правильным». Одна из вещей, которые мне не нравились в настройке WordPress по умолчанию, заключалась в том, что пользователь мог вводить http://ex.com/wp-settings.php и тогда весь этот php-жаргон будет извергаться повсюду. В конце концов я смог отключить ошибки с помощью PHP, но это привело к большему желанию иметь только те вещи, которые были созданы с помощью доступных ресурсов с сервера ... и что все остальное будет 404/3 привязано к нашей странице настраиваемого поиска. После этого у меня возникла идея, что я хотел бы полностью скрыть базовую структуру (например, WP) ... в любом случае ... если вы хотите скрыть WP, это возможно. Но это действительно сложно.
Измените соответствующим образом настройки PHP ini. (т.е. отключить отображение ошибок) Вы можете подумать, что в этом нет необходимости, потому что если мы используем .htaccess для перенаправления вещей, люди не увидят ошибок, потому что они не могут получить доступ к ресурсам, вызывающим ошибку (я смотрю на вас wp-settings.php
). Но на отображаемых страницах могут возникать ошибки, поэтому вы определенно хотите их отключить. Да просто так WP_*
установка директив не обязательно означает, что все будет работать так, как вы думаете. Я обнаружил, что на моем сервере мне пришлось установить для display_errors значение false FIRST, потому что WP_DISPLAY_ERRORS предполагал, что настройка по умолчанию была false.
Для управления настройками PHP ini достаточно просто добавить директиву в файл .htaccess. Или, в моем случае, так сложно, как создать обработчик CGI, а затем поместить туда файл php.ini. YMMV в зависимости от вашей настройки.
Удалите весь доступ к файлам / каталогам с помощью wp-
префикс. Идея состоит в том, что развертывание WP связано с вашим контентом, а не с WP (если только он специально не ориентирован на WP). Людям не имеет смысла смотреть, что есть на http; // ex.com/wp-cron.php ... если только они не задумали ничего плохого. Я добился этого с помощью этого:
# If the resource requested is a `wp-*` file or directory, 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]
Узнай, как просто пройти через мордор Удалив весь доступ к wp-*
вы больше не можете получить доступ к административной части WP. Это действительно отстой. В дополнение к этому угнетающему, вы только что осознали, что не знаете, что RewriteCond %{ENV:REDIRECT_STATUS} ^$
действительно делает. Что ж, я попытался создать себе «секретный» бэкдор на странице администратора WP. Я использовал этот код:
# If the resource requested is 'mordor' (with or without an ending
# slash) do a URL rewrite to `wp-login.php`.
RewriteCond %{REQUEST_URI} mordor/?$ [NC]
RewriteRule mordor/?$ /wp-login.php [NC,L]
Итак, URL: http://ex.com/mordor должен привести нас на страницу входа. Причина, по которой у нас REDIRECT
строка на шаге выше заключается в том, что, поскольку этот URL-адрес перезаписывается на wp-*
URL, мы не хотим, чтобы первое правило перезаписи получило его. Поскольку он перенаправляется внутри, REDIRECT_STATUS
будет настроен правильно, и он не подтолкнет нас к 403/4 земле.
Удалить wp-content Wordpress.stackexchange есть отличная статья об удалении wp-content. Вам нужно переопределить некоторые константы WP, и это в значительной степени работает. Вы также должны перенаправить все обращения из wp-content
в 'любой-контент'. Вероятно, это не будет проблемой, если это чистое развертывание. Если вы изменяете уже существующее развертывание, вам придется сделать некоторые дополнительные действия.
Переписать URL в wp-content по желанию RewriteRule (.*)(wp-content)(.*) $1whatever-content$3 [NC,R,L]
. Это входит в ваш файл .htaccess. Если ваш пользователь пытается получить доступ к старому контенту через wp-content
URL, он будет перенаправлен сюда.
Grep и замените все ссылки на wp-content в вашей БД по желанию. У тебя все еще есть wp-content
в вашей базе данных. Если вы хотите использовать WP бесплатно, вам нужно избавиться от этого материала. Я экспортировал / mysql сбросил свою базу данных, выполнил поиск и заменил на wp-content
строка в новую строку. Вы можете спросить ... зачем мне это делать, если apache перепишет мои URL-адреса? Проблема в том, что исходный код будет содержать эти ссылки, поэтому, если вы действительно хотите скрыть WordPress, вам нужно это сделать. Примечание: на этом этапе я должен был просто остановиться и принять тот факт, что это не сработает. Но я хотел, чтобы мистер Т. пожалел меня.
Заменить все ссылки на wp-includes
и wp-admin
в источнике. Большая часть функциональности WordPress зависит от этих двух каталогов: wp-includes
и wp-admin
. Это означает, что эти имена каталогов жестко запрограммированы в исходном коде. Это означает, что вам нужно будет создать новые каталоги (поскольку PHP использует базовую файловую систему ОС, а не apache) для доступа к ним, а затем ЗАПИСЫВАЕТ ЭТИ в создаваемый HTML. Это слишком много проблем. Я быстро сдался и пошел в ванную покакать.
Конечно, я мог бы просто прочитать http://codex.wordpress.org/Harpting_WordPress и выполнил эти шаги. Но я хотел идеальный сайт. Теперь я просто хочу вернуть все эти часы. Самым большим, что мешало мне остановиться, было то, что я нигде в Интернете не читал, что это было много работы и ее почти невозможно сделать. Вместо этого я читал о людях, которые пытались это сделать, не зная, добились они успеха или нет. Итак, для себя в прошлом, которому я отправлю это через Apple Time Machine, пожалуйста, не пытайтесь скрыть WordPress. Это того не стоит.
Если вы пытаетесь скрыть, что используете wordpress из-за взломщиков, то вам действительно есть над чем поработать. Если вы проделаете трюк с wp *, как насчет wp-content и wp-includes? Не имея возможности добраться до них, вы сломаете страницу, и она будет выглядеть ужасно.
Кроме того, в Wordpress так много вещей, что это действительно требует некоторой работы - и вам, скорее всего, придется сделать много этого снова, когда будет установлено обновление. (Поскольку несколько редиректов в Apache не помогут)
Если вы просто пытаетесь скрыть это от всех мистеров и миссис, тогда, конечно, у вас должна быть возможность сделать это в какой-то мере с помощью неясности.
Вы читали руководство по укреплению Wordpress? Если нет, вам следует проверить это: http://codex.wordpress.org/Harpting_WordPress Это отличное введение во многие вещи, которые вы можете сделать.
Кроме того, если вы так хотите скрыть тот факт, что используете Wordpress, зачем его использовать?
Попробуйте выполнить свою конфигурацию в конфигурации apache. Это может быть включение файла вроде /etc/wordpress/htaccess
. Это позволит вам использовать Directory
директива конфигурации. Однако вам нужно будет перезапустить apache, чтобы загрузить изменения. Используйте постепенный перезапуск, если вы не хотите прерывания обслуживания.
Чтобы ограничить доступ к каталогам с помощью .htaccess
файлы, они должны находиться в соответствующих каталогах. Они работают так же, как содержимое Directory
директива конфигурации. Возможно, вам потребуется включить необходимый .htaccess
параметры в вашей конфигурации apache. Этот метод не так эффективен, как использование команды в конфигурации apache, поскольку его нужно часто анализировать.