Переписать URL на IIS7 для Wordpress
-
03-07-2019 - |
Вопрос
Я использую общий хостинг с IIS7 и поддержкой PHP.Я пытаюсь запустить блог WordPress с "красивыми URL-адресами" (удаление index.php).Хостинг-провайдер не хочет устанавливать модуль URLRewrite, поэтому эта опция мне недоступна.Я нашел плагин для WordPress, который удалит index.php из URL-адресов с постоянными ссылками, и предполагается, что изменение страницы 404 на index.php сделает свое дело...это тоже не работает.
Я знаком с переписыванием URL для веб-сайта ASP.NET, но я не уверен, как бы я поступил с этим для PHP.Настройка хостинга, похоже, поддерживает ASP.NET и PHP одновременно, поэтому я думаю, что можно было бы запустить код перезаписи через ASP.NET, но я не уверен, как это сделать.
Есть ли у кого-нибудь какой-либо опыт в этом или какие-либо идеи о наилучшем подходе?Если что-то приведет меня в правильном направлении или если я разберусь в этом сам, я буду более чем счастлив поделиться кодом здесь для всех, кому он может понадобиться.
Решение 2
Спасибо вам всем за предложения.
Мой хост закончил установку IIRF и это сработало как по волшебству.Существует файл с именем IsapiRewrite4.ini для правил перезаписи.Чтобы запустить мою установку Wordpress без index.php в URL, все, что мне нужно было сделать, это добавить:
RewriteRule ^/sitemap.xml$ - [L]
RewriteRule ^/(?!index.php)(?!wp-)(.*)$ /index.php/$1
Первая строка разрешает запросы на получение файла sitemap.xml.Вторая строка обрабатывает удаление index.php из URL-адреса.Кажется, все в порядке и с точки зрения производительности, я вообще не видел никаких проблем с тем, что страницы реагируют медленно.
Надеюсь, это поможет кому-нибудь еще, кому нужна аналогичная функциональность.
Другие советы
Я использую Управляемый Перезаписчик URL-адресов Fusion и еще пользовательская страница с ошибкой 404 на моем Блог.
Для перезаписи URL-адреса ManagedFusion требуется файл с именем ManagedFusion.Rewriter.rules, который имитирует .htaccess, мне пришлось немного поиграть с ним, чтобы сделать все правильно, поэтому я включу то, что у меня сейчас есть в моем:
# Managed Fusion Url Rewriter
# http://managedfusion.com/products/url-rewriter/
#
# Developed by: Nick Berardi
# Support: support@managedfusion.com
#
RewriteEngine on
#
# Place Rules Below
#
# misc WordPress rewrites
RewriteRule ^/wp-login\.php$ /wp-login.php [L]
RewriteRule ^/wp-comments-post\.php$ /wp-comments-post.php [L]
RewriteRule ^/wp-admin/(.*)$ /wp-admin/$1 [L]
# deny access to evil robots site rippers offline browsers and other nasty scum
RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR]
RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]
RewriteCond %{HTTP_USER_AGENT} ^attach [OR]
RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xenu [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F,L]
# remove www
RewriteCond %{HTTP_HOST} ^www\.robboek\.com$ [NC]
RewriteRule ^(.*)$ http://robboek.com$1 [R=301]
# redirect old urls
RewriteRule ^/2008/12/blog-on-hold.html$ /2008/12/12/blog-on-hold/ [R=301]
RewriteRule ^/2008/11/google-chrome-wont-start-in-vista-x64\.html$ /2008/11/16/google-chrome-wont-start-in-vista-x64/ [R=301]
RewriteRule ^/2008/11/pass-community-summit-2008-events.html$ /2008/11/14/pass-community-summit-2008-events-calendar/ [R=301]
RewriteRule ^/2008/11/fort-stevens-camping-trip.html$ /2008/11/14/fort-stevens-camping-trip/ [R=301]
RewriteRule ^/2008/10/first-post.html$ /2008/10/10/first-post/ [R=301]
RewriteRule ^/blog/CommentView,guid,1d8cba50-0814-4c89-86df-eca669973e8e.aspx$ /2006/09/29/junctions-in-windows-vista/ [R=301]
RewriteRule ^/blog/2006/09/29/JunctionsInWindowsVista.aspx$ /2006/09/29/junctions-in-windows-vista/ [R=301]
# rewrite all nonexistent files and directories to use index.php for WordPress
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php$1
Правила обрабатывают красивые URL-адреса, удаляют www и перенаправляют несколько старых URL-адресов из предыдущего блога.
У меня также есть файл "404.php", который я настроил как свою пользовательскую страницу ошибок 404.Это не требуется для красивых URL-адресов, но позволит вам использовать страницу WordPress 404 в пользовательских темах.Вот его содержание:
<?php
$qs = $_SERVER['QUERY_STRING'];
$pos = strrpos($qs, '://');
$pos = strpos($qs, '/', $pos + 4);
$_SERVER['REQUEST_URI'] = substr($qs, $pos);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include('index.php');
?>
Я надеюсь, что это поможет.До сих пор у меня это работало очень хорошо.
-Роб
Обновить:Я только что опубликовал статья в блоге о моем опыте использования WordPress на IIS7
Предполагается, что изменение страницы 404 на index.php должно сработать.Если это не так, возможно, плагин не поддерживает IIS.
Существует xml - файл "web.config" файл в IIS, который делает то, что .htaccess делает в Apache HTTPD.(т.е.Переопределить настройки веб-сервера с помощью статического файла конфигурации).Он широко используется в ASP.NET применении.
Пожалуйста, прочтите Включить пользовательские ошибки в WordPress в IIS 7.0 Если и это не сработает, вы можете попытаться попросить своего поставщика услуг настроить это для вас.Они могут настроить этот параметр с помощью графического интерфейса консоли управления IIS.