2008-12-30 150 views
6

我使用與IIS7共享主機並支持PHP。我試圖運行一個WordPress的博客與「漂亮的網址」(刪除index.php)。主機提供商不想安裝URLRewrite模塊,因此該選項對我無效。我發現了一個wordpress插件,它將從permalink URLs中刪除index.php,並將404頁面更改爲index.php應該做的伎倆......這也不起作用。在IIS7上爲Wordpress重寫URL

我很熟悉ASP.NET網站的URL重寫,但我不確定我會如何去處理它。主機設置似乎同時支持ASP.NET和PHP,所以我認爲可以通過ASP.NET運行重寫代碼,但我不知道如何去做。

有沒有人有任何這方面的經驗或有關最佳方法的任何想法。如果有任何事情讓我朝着正確的方向發展,或者如果我自己想出來的話,我會非常樂意將代碼分享給任何可能需要它的人。

回答

4

謝謝大家的建議。

我的主人結束了安裝IIRF,它的工作就像一個魅力。有一個名爲IsapiRewrite4.ini的文件用於重寫規則。爲了讓我的WordPress安裝,而不在URL中的index.php運行時,所有我需要做的就是添加:

RewriteRule ^/sitemap.xml$ - [L] 
RewriteRule ^/(?!index.php)(?!wp-)(.*)$ /index.php/$1 

第一行允許sitemap.xml的文件請求。第二行處理從URL中刪除index.php。從性能的角度來看,它似乎也很好,我還沒有看到任何頁面響應緩慢的問題。

希望這可以幫助其他需要類似功能的人。

5

我用我的blogManagedFusion Url Rewriter自定義404錯誤頁面

的ManagedFusion網址重寫需要ManagedFusion.Rewriter.rules文件名爲模仿的.htaccess,我必須發揮與它周圍相當多的得到它的權利,所以我會包括我目前在礦山:

# Managed Fusion Url Rewriter 
# http://managedfusion.com/products/url-rewriter/ 
# 
# Developed by: Nick Berardi 
#  Support: [email protected] 
# 
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錯誤頁面。這不是漂亮的網址需要的,但可以讓你在自定義主題中使用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'); 
?> 

我希望有所幫助。到目前爲止,它對我來說工作得非常好。

-Rob

更新:我剛剛發佈了一個blog article on my experience using WordPress on IIS7

+0

我目前在等待,以瞭解爲什麼我的自定義404設置無法正常工作,但一旦它被修復,我會給這個鏡頭。謝謝! – 2009-01-02 07:20:19

0

改變404頁的index.php到是應該做的伎倆。如果沒有,該插件可能不支持IIS。

IIS中有一個xml「web.config」文件,用於執行Apache HTTPD中的.htaccess功能。 (即通過靜態配置文件覆蓋web服務器設置)。它在ASP.NET應用程序中被廣泛使用。

請閱讀Enable custom errors in WordPress on IIS 7.0 如果這也行不通,您可以嘗試要求您的服務提供商爲您設置它。 他們可以通過IIS管理控制檯GUI配置此設置。