部署前验证.htaccess

问题描述:

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

我意识到,这里最好的防守可能是在CMS级别进行良好的训练+故障安全。遗憾的是,这是一个名为CubeCart的第三方解决方案,我暂时不能介入,SEO解决方案应该是独立的,只是使用CubeCart数据。

很明显,我必须添加一些检查来处理品牌/类别/着陆页名称。即便如此,在替换'live'之前,我很想分析/验证新建的.htaccess,以避免可能出现的语法问题。是否有任何语法验证程序/方法来测试Apache与新的.htaccess?

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

像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文件。

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

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

+0

感谢您的想法,请参阅我对其他回复的评论。我仍然宁愿一次性验证或测试。 – 2010-03-15 17:00:53