代码之家  ›  专栏  ›  技术社区  ›  Andrew Van Slaars

为Wordpress在IIS7上重写URL

  •  6
  • Andrew Van Slaars  · 技术社区  · 16 年前

    有没有人对此有任何经验,或者对最佳方法有什么想法。如果有什么能指引我走向正确的方向,或者如果我自己能找到它,我将非常乐意在这里为任何其他可能需要它的人分享代码。

    3 回复  |  直到 16 年前
        1
  •  5
  •   Rob Boek    16 年前

    我在用电话 ManagedFusion Url Rewriter 在我的 blog .

    ManagedFusion Url重写器需要一个名为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');
    ?>
    

    我希望这有帮助。到目前为止,它对我一直很有效。

    -抢劫

    更新:我刚刚发布了一个 blog article on my experience using WordPress on IIS7

        2
  •  4
  •   Andrew Van Slaars    16 年前

    我的主机最终安装了 IIRF 它就像一个符咒。有一个名为IsapiRewrite4.ini的文件用于重写规则。为了让我的Wordpress安装在URL中没有index.php的情况下运行,我所要做的就是添加:

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

    希望这将帮助其他需要类似功能的人。

        3
  •  0
  •   Dennis C    16 年前

    将404页面更改为index.php应该可以做到这一点。如果不支持,插件可能不支持IIS。

    web.config “IIS中的文件,其作用与Apache HTTPD中的.htaccess相同。(即,通过静态配置文件覆盖web服务器设置)。它广泛用于ASP.NET应用程序中。

    请阅读 Enable custom errors in WordPress on IIS 7.0 他们可以通过IIS管理控制台GUI配置此设置。