使用.htaccess或任何其他方法调整动态生成的链接?

时间:2010-07-18 19:18:40

标签: php .htaccess mod-rewrite dynamic e-commerce

我有一个电子商务网站(使用ecommercetemplates购物车PHP模板创建),并且在目录页面上有时会有几个页面编号在底部。例如,这些页面的链接形式为: - /product.php?cat=27&pg=2,尽管主页面已映射到: - /widgets使用.htaccess文件中的重写规则。

为了保持一致性和简洁性,我希望这些页面如下: - /widgets?pg=2。我在这个论坛上问过如何做到这一点并找到了以下解决方案: -

RewriteRule ^widgets$ products.php?cat=27 [QSA] 

问题在于,尽管上述重写规则按我的意愿工作,但目录页面上的当前链接仍然指向,例如: - /product.php?cat=27&pg=2。要转到/widgets?pg=2,我必须在浏览器中输入此内容。

所以我的问题是:如何更改目录页面上的动态生成的当前链接?是否有任何进一步的规则可以输入.htaccess或者是否有其他解决方案可以解决这个问题?以下是产品页面的PHO代码: - http://freetexthost.com/3ubiydspzm

在上面的链接中,如果您搜索“writepagebar”,我认为这是“下一页”,“上一页”和“页码”的完成位置。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您有几个选择:

他们中的大多数都需要的不仅仅是.htaccess重写规则。

  • 您可以修改writepagebar功能以输出友好的URL。 (并更改可能链接到此产品页面的任何其他功能。)
  • 您可以缓冲整个页面的输出并对其进行字符串替换。 (参见PHP手册中的ob_start和ob_get_clean。)
  • 您可以将丑陋的网址重定向到具有301重定向的漂亮网址。 (链接将保持不变,但您的友好URL会获得SEO信用并显示在浏览器中。)
    • 或者您可以尝试这个丑陋的mod_rewrite hack,我不能保证它可以在您的服务器上或您的应用程序上运行。

哈克:

RewriteCond %{QUERY_STRING} (.*)(cat=27\&)(.*) [OR]
RewriteCond %{QUERY_STRING} (.*)(cat=27)(.*)
RewriteCond %{THE_REQUEST} !widgets
RewriteRule ^products.php$ widgets?%1%3 [R=301,L]

(这可能需要重写基础选项)
http://services.rrbits.com/products.php?cat=27&pg=2(示例链接。)