代码之家  ›  专栏  ›  技术社区  ›  Jimmy

301在IIS上与Joomla重定向

  •  1
  • Jimmy  · 技术社区  · 16 年前

    我在用IIS管理Joomla。我有十几个类别(金融时事通讯出版商),用来组织大约40篇文章(金融时事通讯)。我使用的是Joomla内置SEO,因此URL如下所示:

    http://www.global-autotrading.com/autotraded-newsletters/13-angel-publishing/43-options-trading-pit.html

    分类和文章前面的数字很烦人,我不太喜欢分区布局菜单项提供的导航。另外,有些财经通讯不在出版商的保护下运作,所以我想要一个更灵活的组织。

    我尝试过简单地构建一个菜单层次结构(在自动跟踪的新闻稿菜单下),其中一些新闻稿直接位于父菜单项下,而一些发布者则将其新闻稿作为菜单项置于其下。但是,这导致了一些链接断开;单击一个链接将使我转到错误的文章,而不是。因此,似乎使用手工编码的菜单结构与使用内容的另一个“并行”部分布局视图不兼容。

    因此,我决定放弃使用类别组织内容的想法。我将为每个“发布者”类别创建一篇文章。我将在该发布者的文章中手动添加到每个发布者的新闻稿的链接。我还将创建一个类似于上面描述的并行菜单结构。

    不管怎样,这是很多背景信息,希望我能得到一些确认,我没有做一些根本上有缺陷的事情。

    问题是有一些外部站点直接链接到上面这样的一些URL。我不希望这些链接被破坏(我相信是经典的SEO问题)。我认为解决方案是使用301重定向到(例如)重定向到:

    http://www.global-autotrading.com/autotraded-newsletters/13-angel-publishing/43-options-trading-pit.html

    http://www.global-autotrading.com/autotraded-newsletters/angel-publishing/options-trading-pit.html
    

    或来自

    http://www.global-autotrading.com/autotraded-newsletters/4-10-percent-per-month/12-10-percent-per-month.html

    http://www.global-autotrading.com/autotraded-newsletters/10-percent-per-month.html
    

    关于在IIS中创建301重定向,有各种指导方针(例如: http://www.webconfs.com/how-to-redirect-a-webpage.php 但是我想知道这些是否与joomla兼容,特别是与启用了seo功能的joomla兼容。

    另外,如果我做了一些根本错误的事情,请告诉我:)

    谢谢!

    2 回复  |  直到 15 年前
        1
  •  0
  •   Jimmy    16 年前

    这里是web.config文件的rewrite部分。最棘手的部分是发现重定向规则需要预先处理web.config中的SEO规则。

    <rewrite>
      <rewriteMaps>
        <rewriteMap name="StaticRedirects">
          <add key="/old-url-1.html" value="new-url-1.html" />
          <add key="/old-url-2.html" value="new-url-2.html" />
        </rewriteMap>
      </rewriteMaps>
      <rules>
        <rule name="Security Rule" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions logicalGrouping="MatchAny">
            <add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|\%3D)" ignoreCase="false" />
            <add input="{QUERY_STRING}" pattern="base64_encode.*\(.*\)" ignoreCase="false" />
            <add input="{QUERY_STRING}" pattern="(\&lt;|%3C).*script.*(\>|%3E)" />
            <add input="{QUERY_STRING}" pattern="GLOBALS(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" />
            <add input="{QUERY_STRING}" pattern="_REQUEST(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" />
          </conditions>
          <action type="CustomResponse" url="index.php" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
        </rule>
        <rule name="Redirect Rule" stopProcessing="false">
          <match url=".*" />
          <conditions>
            <add input="{StaticRedirects:{REQUEST_URI}}" pattern="(.+)" />
          </conditions>
          <action type="Redirect" url="{C:1}" appendQueryString="False" redirectType="Permanent" />
        </rule>
        <rule name="SEO Rule">
          <match url="(.*)" ignoreCase="false" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" />
            <add input="{URL}" negate="true" pattern="^/index.php" ignoreCase="false" />
            <add input="{URL}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" />
          </conditions>
          <action type="Rewrite" url="index.php" />
        </rule>
      </rules>
    </rewrite>
    
        2
  •  0
  •   g1smd    15 年前

    与此类似的代码最近包含在从1.6.2版开始的默认joomla安装中。

    重要的是,所有外部重定向都要在任何内部重写之前列出,否则重写的指针将不经意地作为新的URL暴露回Web。