我知道這是一個老帖子,但如果你仍然需要解決或其他建議,這裏是我工作,爲了什麼情景。
當您嘗試在共享主機環境中運行WordPress時,運行帶有IIS 6服務器的Windows 2003時,您可能會遇到自定義永久鏈接可能無法使用的自定義永久鏈接,例如/%postname%/將返回404錯誤。
如果您的ISP安裝了ISAPI_Rewrite 2並使用ISAPI_Rewrite將流量重定向到不同的站點,這可能適用於您。我縮短了httpd.ini以顯示這是如何工作的WordPress的兩個實例。
這個httpd.ini位於所有網站的根目錄,並且對所有網站都有規定。
[ISAPI_Rewrite]
### subdomain redirect v2 ###
RewriteCond Host: (?:.+\.)?your-domain-name1\.com
RewriteCond URL ^/site-path1/(.*)
RewriteCond METHOD GET
RewriteRule ^/site-path1/(.*) /$1 [I,R]
RewriteCond Host: (?:.+\.)?your-domain-name1\.com
RewriteCond METHOD POST
RewriteRule ^/site-path1/(.*) /$1 [I]
RewriteCond Host: (?:.+\.)?your-domain-name1\.com
### RewriteRule (.*) /site-path1/$1 [I,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/wp-admin/?$ /newhat/wp-admin/index.php [I,L]
RewriteRule ([^.]*) /site-path1/index.php/$1 [I,L]
RewriteRule (.*) /site-path1/$1 [I,L]
### subdomain redirect v2 ###
RewriteCond Host: (?:.+\.)?your-domain-name2\.com
RewriteCond URL ^/site-path2/(.*)
RewriteCond METHOD GET
RewriteRule ^/site-path2/(.*) /$1 [I,R]
RewriteCond Host: (?:.+\.)?your-domain-name2\.com
RewriteCond METHOD POST
RewriteRule ^/site-path2/(.*) /$1 [I]
RewriteCond Host: (?:.+\.)?your-domain-name2\.com
### RewriteRule (.*) /site-path2/$1 [I,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/wp-admin/?$ /newhat/wp-admin/index.php [I,L]
RewriteRule ([^.]*) /site-path2/index.php/$1 [I,L]
RewriteRule (.*) /site-path2/$1 [I,L]
線### RewriteRule (.*) /site-path2/$1 [I,L]
中註釋掉的版本是修改前的原始ISP配置的最後一行。我插入了4條新線剛剛收到:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/wp-admin/?$ /newhat/wp-admin/index.php [I,L]
RewriteRule ([^.]*) /site-path2/index.php/$1 [I,L]
這SO link解釋重寫規則。
我對該行RewriteRule ([^.]*) /site-path2/index.php/$1 [I,L]
的理解是,對於任何不包含句點的網址,請將其重寫爲附加index.php
。這就是爲什麼它需要在(.*)
線之前完成一切。
管理工具欄,如果顯示它有一個鏈接到/wp-admin/
沒有指定index.php
哪個規則RewriteRule ^/wp-admin/?$ /newhat/wp-admin/index.php [I,L]
另一篇文章/網址與這有助於爲online Apache mod_rewrite測試儀。