代码之家  ›  专栏  ›  技术社区  ›  Dimitar Christoff

部署前正在验证.htaccess

  •  0
  • Dimitar Christoff  · 技术社区  · 15 年前

    为了获得更好的seo和更干净的url,我倾向于将某些重写规则直接导出到.htaccess中(例如, RewriteRule ^The_North_Face(.*)$ index.php?a=brands&id=27&extras=%1 [NC,L] 对每个品牌或类别依次类推)。它比这个复杂得多,但今天我发现这个文件只和它试图使用的数据一样好。网站所有者设法放置了空的类别名称/url和一些导致严重的内部服务器错误的未转义字符,从而阻止了任何和所有网站访问(包括重建网站的工具)。

    我意识到这里最好的防守可能是在CMS级别的良好训练+故障保护。遗憾的是,这是一个名为cubecart的第三方解决方案,我暂时无法使用,seo解决方案应该是独立的,只是使用cubecart数据。

    很明显,我需要添加一些与品牌/类别/登录页名称相关的检查。即便如此,我还是很想在替换“live”之前解析/验证新构建的.htaccess,以避免语法上可能出现的问题。有没有语法验证器/方法来测试apache对一个新的.htaccess?

    我还可以考虑将它部署到一个子目录中,然后使用curl来获取一些请求作为测试,还有什么我可以做的吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Dichev    15 年前

    你可以像wordpress那样使用:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    

    …然后在 index.php 文件解析 $_SERVER["REDIRECT_URL"] 与你网站的uri逻辑相反。这样,您就可以更轻松地通过php处理任何数据库变量,如brand或category automatic,而无需在每次内容更改时编辑.htaccess文件。

        2
  •  1
  •   Franz    15 年前

    我建议将所有请求重定向到一个文件 rewrite.php . 在这里,您可以分析请求的文件并将其与一组规则相匹配。你用结果来填充 $_GET 数组,然后包含正确的文件。

    php语法错误更容易找到,而且您肯定不会得到500个错误页面。