我正在编写一个自定义Magento模块来处理网站的404个网址,以满足一些营销要求。我想知道捕获404并在进入Apache404页面之前通过我的模块传递它们的最好方法是什么?
我有几种人们这样做的方法,但不是专门针对Magento的。因此,请随时提供您的专家建议。谢谢!
发布于 2013-04-30 10:29:28
您不需要特定于CMS的方法。只需添加到您的.htaccess文件:
ErrorDocument 404 /some_php_script.php或者像这样,使用mod_rewrite:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ some_php_script.php/$1后者的优点是可以让您访问POST数据。这个php脚本负责以某种方式连接到您的CMS代码。
你应该能够用$_SERVER['REQUEST_URI']得到原始的url。此脚本负责使用header()函数通过200 OK或404 Not Found回复状态
编辑:原来magento已经这样做了(所有的非静态urls都被路由到index.php)。我不太熟悉内容管理系统,但它似乎显示了一个带有标识符"no-route“的页面,所以希望您可以用所需的内容替换该页面的内容(相关代码是Mage_Cms_Model_Page类、NOROUTE_PAGE_ID和noRoutePage()函数)。当你试图理解如何处理代码时,grep -r是你的朋友,别人写道:D
https://stackoverflow.com/questions/16291148
复制相似问题