Вопрос

Я использую общий хостинг с 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top