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

mod eu rewrite.htm到fake子目录

  •  0
  • Gelatin  · 技术社区  · 15 年前

    我有一个网站有一个CMS,它使用mod重写使URL看起来更干净。以前,干净的URL有扩展名.htm,但我想将其转换为显示为假子目录的URL,即:

    http://www.example.com/pagename/
    

    我有两个重写规则来重写旧方案和潜在的新方案:

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+).htm$ index.php?page=$1 [QSA]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)/$ index.php?page=$1 [QSA]
    

    我的问题是,我试图用来将旧的URL重定向到新的URL的规则没有任何作用。

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+).htm$ $1/ [R=302,NC,QSA]
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   Gumbo    15 年前

    不能使用具有相同模式的两个规则,因为只应用其中的第一个规则。尝试将_156;重写_157;规则替换为新的__重定向_157;规则以重定向旧的URL,而不是只重写:

    # redirect foo.htm to foo/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)\.htm$ $1/ [R=301,NC]
    # rewrite foo/ to index.php?page=foo
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)/$ index.php?page=$1 [QSA]