我知道这是一篇较旧的帖子,但如果您仍然需要解决方案或其他建议,这对我有用,适用于什么场景。
当您尝试在共享主机环境中运行 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 链接解释了重写规则。
我对这一行的理解RewriteRule ([^.]*) /site-path2/index.php/$1 [I,L]
是,对于任何不包含句点的 URL,将其重写为 append index.php
。这就是为什么它需要在(.*)
获取所有内容的行之前。
管理工具栏,如果显示有一个链接到/wp-admin/
没有指定index.php
哪个规则RewriteRule ^/wp-admin/?$ /newhat/wp-admin/index.php [I,L]
另一篇对此有所帮助的文章/网站是在线 Apache mod_rewrite测试器。