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

Php 使用.htaccess或任何其他方法调整动态生成的链接?,php,.htaccess,mod-rewrite,dynamic,e-commerce,Php,.htaccess,Mod Rewrite,Dynamic,E Commerce,我有一个电子商务网站创建了一个电子商务模板购物车PHP模板,在目录页面上,有时有一些页面在底部编号。例如,这些页面的链接形式为:-/product.php?cat=27&pg=2,尽管主页已使用.htaccess文件中的重写规则映射到:-/widgets 为了一致性和简单性,我希望页面为:-/widgets?pg=2。我在这个论坛上询问了如何做到这一点,并找到了以下解决方案:- RewriteRule ^widgets$ products.php?cat=27 [QSA] 问题是,尽管上面的

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

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

RewriteRule ^widgets$ products.php?cat=27 [QSA] 
问题是,尽管上面的重写规则按我所希望的那样工作,目录页面上的当前链接仍然指向,例如:-/product.php?cat=27&pg=2。为了转到/widgets?pg=2,我必须在浏览器中输入它

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


在上面的链接中,如果您搜索“writepagebar”,我想这就是“下一页”、“上一页”和“页码”的位置。

您有几个选项:

其中大多数要求的不仅仅是.htaccess重写规则

您可以修改writepagebar函数,为您输出友好的URL。并更改可能链接到此产品页面的任何其他功能。 您可以缓冲整个页面的输出,并对其执行字符串替换。请参阅PHP手册中的ob_start和ob_get_clean。 您可以使用301重定向将丑陋的URL重定向到漂亮的URL。链接将保持不变,但您的友好URL将获得SEO积分并显示在浏览器中。 您可以通过以下任一方式进行操作: 或者你可以试试这个丑陋的mod_重写黑客,我不能保证它能在你的服务器或应用程序上工作。 黑客:

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

我可以告诉您,这不能用.htaccess/mod_rewrite来完成-这些仅用于更改浏览器实际请求的URL。您试图做的是更改HTML页面的内容,要做到这一点,您需要更改PHP文件的内容。如果您能够识别PHP文件中与/product.PHP?cat=27&pg=2链接相对应的部分,这会有所帮助。在该页面上,如果您搜索“writepagebar”,我认为这就是“下一页”、“上一页”和“页码”的位置。我认为调整writepagebar函数可能值得一试。你知道如何调整它以得到我想要的结果吗?我已经在其中一个答案中发布了代码。
RewriteCond %{QUERY_STRING} (.*)(cat=27\&)(.*) [OR]
RewriteCond %{QUERY_STRING} (.*)(cat=27)(.*)
RewriteCond %{THE_REQUEST} !widgets
RewriteRule ^products.php$ widgets?%1%3 [R=301,L]