代码之家  ›  专栏  ›  技术社区  ›  Jason Watkins

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

  •  0
  • Jason Watkins  · 技术社区  · 6 年前

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

    为了一致性和简单性,我希望页面如下:- /widgets?pg=2

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

    问题是,尽管上面的重写规则如我所愿工作,目录页上的当前链接仍然指向,例如example:- /product.php?cat=27&pg=2 ,我必须在浏览器中输入。

    所以我的问题是:如何更改目录页上动态生成的当前链接?是否有其他规则可以输入到.htaccess中,或者是否有其他解决此问题的方法?以下是产品的PHO代码page:- http://freetexthost.com/3ubiydspzm

    2 回复  |  直到 14 年前
        1
  •  0
  •   Community CDub    8 年前

    你有几个选择:

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

    • 您可以修改writepagebar函数为您输出友好的URL(并更改可能链接到此产品页的任何其他功能。)
    • 您可以缓冲整个页面的输出,并对其执行字符串替换(请参阅PHP手册中的ob\u start和ob\u get\u clean。)
    • 你可以重定向丑陋的网址到漂亮的301重定向(链接将保持不变,但您的友好URL会获得SEO积分并显示在浏览器中。)
      • 或者你可以试试这个丑陋的mod\u重写黑客,我不能保证它能在你的服务器或应用程序上工作。

    乱劈:

    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 (示例链接。)