【问题标题】:URL Rewrite on IIS7 for Wordpress在 IIS7 上为 Wordpress 重写 URL
【发布时间】:2009-01-13 05:34:30
【问题描述】:

我正在使用带有 IIS7 的共享主机并支持 PHP。我正在尝试使用“漂亮的 url”(删除 index.php)运行一个 wordpress 博客。托管服务提供商不想安装 URLRewrite 模块,因此我无法使用该选项。我找到了一个 wordpress 插件,它可以从永久链接 URL 中删除 index.php,并将 404 页面更改为 index.php 应该可以解决问题……这也不起作用。

我熟悉 ASP.NET 网站的 URL 重写,但我不确定我将如何处理 PHP。托管设置似乎同时支持 ASP.NET 和 PHP,所以我认为可以通过 ASP.NET 运行重写代码,但我不知道如何去做。

是否有人对此有任何经验或对最佳方法有任何想法。如果有任何事情引导我朝着正确的方向前进,或者如果我自己弄清楚了,我将非常乐意在这里为任何可能需要它的人分享代码。

【问题讨论】:

    标签: asp.net wordpress url-rewriting


    【解决方案1】:

    我在 blog 上使用 ManagedFusion Url Rewriter 和 自定义 404 错误页面。

    ManagedFusion Url Rewriter 需要一个名为 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

    【讨论】:

    • 我目前正在等待找出为什么我的自定义 404 设置不起作用但是一旦它被修复,我会试一试。谢谢!
    【解决方案2】:

    谢谢大家的建议。

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

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

    第一行允许对 sitemap.xml 文件的请求。第二行处理从 URL 中删除 index.php。从性能的角度来看,这似乎也很好,我根本没有看到页面响应缓慢的任何问题。

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

    【讨论】:

      【解决方案3】:

      将 404 页面更改为 index.php 应该可以解决问题。如果不支持,则该插件可能不支持 IIS。

      IIS 中有一个 xml“web.config”文件,其功能与 .htaccess 在 Apache HTTPD 中的功能相同。 (即通过静态配置文件覆盖 Web 服务器设置)。广泛应用于 ASP.NET 应用程序中。

      请阅读Enable custom errors in WordPress on IIS 7.0 如果这也不起作用,您可以尝试让您的服务提供商为您设置它。 他们可以通过 IIS 管理控制台 GUI 配置此设置。

      【讨论】:

        猜你喜欢
        • 2012-10-09
        • 2012-01-01
        • 2013-08-09
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        • 2010-10-09
        • 2012-02-07
        • 1970-01-01
        相关资源
        最近更新 更多