在部署之前验证.htaccess

时间:2010-03-09 09:24:58

标签: php apache .htaccess seo

为了获得更好的搜索引擎优化和更清晰的网址,我倾向于将某些RewriteRules直接导出到.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 个答案:

答案 0 :(得分:1)

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

PHP语法错误更容易找到,你绝对不会得到500错误页面。

答案 1 :(得分:1)

你可以使用像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自动处理任何数据库变量(如品牌或类别),而无需在每次更改内容时编辑.htaccess文件。