【问题标题】:validating .htaccess before deployment在部署之前验证 .htaccess
【发布时间】:2011-01-25 08:35:19
【问题描述】:

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

我意识到这里最好的防御可能是良好的训练 + CMS 级别的故障保护。遗憾的是,这是一个名为 CubeCart 的 3 方解决方案,我暂时无法深入了解,SEO 解决方案应该是独立的,并且只使用 CubeCart 数据。

显然,我必须添加一些与品牌/类别/着陆页名称有关的检查。即便如此,我还是很想在替换“实时”之前解析/验证新构建的 .htaccess,以避免可能与语法有关的问题。是否有任何语法验证器/方法可以针对新的 .htaccess 测试 Apache?

我也可以考虑把它部署在一个子目录中,然后用 curl GET 几个请求作为测试,还有什么办法吗?

【问题讨论】:

    标签: php apache .htaccess seo


    【解决方案1】:

    我建议将所有请求重定向到文件rewrite.php。在那里,您解析请求的文件并将其与一组规则进行匹配。您使用结果填充$_GET 数组,然后包含正确的文件。

    PHP 语法错误更容易找到,而且绝对不会出现 500 错误页面。

    【讨论】:

    • 感谢您的想法,请参阅我对其他回复的评论。我仍然更喜欢一次性验证或测试。
    【解决方案2】:

    你可以使用类似 WordPress 的东西:

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

    ... 然后在 index.php 文件中根据您网站的 URI 逻辑解析 $_SERVER["REDIRECT_URL"]。这样,您可以更轻松地通过 PHP 自动处理品牌或类别等任何数据库变量,而无需在每次内容更改时编辑 .htaccess 文件。

    【讨论】:

      猜你喜欢
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-21
      • 2022-09-23
      相关资源
      最近更新 更多