2010-11-29 100 views
0

我希望非IIS的人可以幫助我,雖然我遇到的問題是基於運行ISAPI_Rewriter的IIS6服務器。mod_rewrite在IIS6上使用ISAPI_rewriter問題

情況是,我在IIS6上運行Wordpress,ISAPI_Rewriter被用來作爲mod_rewrite的替代品,並且運行正常。我的問題是,當我得到它重寫我的WordPress的URL(所以我不需要index.php文件名),它顯示了一個404。經過多次搜索,我發現問題是因爲部分ASP.net(或類似的東西)添加eurl.axd/[隨機字符串]到URL的末尾,所以這被送入WordPress的請求並打破它。我設置了WordPress的模板來輸出請求的URL,它看起來是這樣的:

http://www.example.com/index.php/about/eurl.axd/b552863f2d5e9841b5d8b79b44ac02e8/

我相信這是因爲不同的東西在IIS系統啄食順序和需要的罪魁禍首運行另一個項目的一部分。我寧願繼續使用ISAPI_Rewriter來漂亮的URL,所以我想知道這一點:

有沒有任何方式獲取mod_rewrite刪除eurl.axd/[字符串]之前提供給系統?

我的.htaccess文件目前出現這樣的:

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# The following line excludes folders from rewriting 
RewriteCond %{REQUEST_URI} !^/folder-name/ 

RewriteRule ^/(.*)$ /$1 [NC,L] 

感謝所有幫助,它總是不勝感激。


編輯:根據建議調整了我的htaccess,它似乎從我進行的簡短測試中工作得很好。已經在下面發佈。

RewriteEngine on 
RewriteBase/

# This is used to strip ASP.net eurl.axd bits 
# from the URL so wordpress can use permalinks 


# For the root 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/wp-admin/ 
RewriteRule ^eurl\.axd/[0-9a-f]+/$ index.php [NC,L] 


# For internal permalinks 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/wp-admin/ 
RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ index.php/$1 [NC,L] 

回答

1

像這樣的東西靠近你重寫列表的頂部應該工作:

RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ /$1 
+0

真棒,它設置它直!基於這一點對我的htaccess做了一些調整,這很有魅力。謝謝勞倫斯。 – Leonard 2010-11-30 12:18:22

0

我用下面的正則表達式爲第一規則與離子學的ISAPI重寫運行的網站ASP.NET 4 on IIS 6,以解決由ASP.NET 4引入的breaking change引起的問題:

RewriteRule ^(.*)/eurl.axd/[a-f0-9]{32}(.*)$ $1$2 

這讓我再次使用無擴展名的網址。

請注意,第二組捕獲查詢字符串(如果存在)並將其恢復爲重寫的URL。

是的,這是a feature, not a bug