【问题标题】:Htaccess to rewrite url for an existing php appHtaccess 重写现有 php 应用程序的 url
【发布时间】:2021-09-23 15:05:07
【问题描述】:

我开发了一个 PHP 应用程序,我想重写 URL 以使其更简洁, 我有多个页面,每个页面可以有 0 个或多个 GET 变量,

我想要实现的示例:

index.php -> /

/index.php?var1=aaa&var2=bbb&var3=ccc -> /var1/aaa/var2/bbb/var3/ccc

/product.php?var4=ddd&var5=eee -> /product/var4/ddd/var5/eee

/products-list.php -> /products-list/

等等……

谁能帮我提供一个完整的 .htaccess 文件来实现这个结果? 有没有办法让 PHP 读取 GET 参数,还是我需要添加一个函数来从每个页面上的 URL 创建一个 $_GET 数组?

谢谢。

【问题讨论】:

  • _GET 超全局变量会自动为您填充,不需要任何此类函数。假设您实际上在重写目标中指定了 get 变量。
  • 您会发现数百个用于重写路径标记以获取变量的工作示例。我相信您可以开始实施自己的解决方案。您将需要三个或四个规则,每个变量数量一个单独的规则。将更专业的规则放在下面,更一般的规则放在下面。如果您在让事情正常工作时遇到问题,那么是时候来这里询问了。在问题中发布您自己的实施尝试,并准确解释究竟什么不能按预期工作。
  • @arkascha 你能和我分享一个链接到一个工作示例吗?
  • 花 10 秒时间浏览右侧的“相关”部分,以该部分为例:stackoverflow.com/questions/15622846/…
  • @arkascha 我已经搜索并尝试实现多个示例但没有运气,您共享的链接中的示例假定变量的名称不是动态的,我的变量可以有任何名称,而且我有多个页面,不仅是 index.php

标签: apache .htaccess url-rewriting


【解决方案1】:

这些简单的规则将重写你在问题中给出的例子:

RewriteEngine on
RewriteEngine ^/?products-list/?$ /products-list.php [QSA,END]
RewriteRule ^/?product/([^/+])/([^/+])/([^/+])/([^/+])/?$ /product.php?$1=$2&$3=$4 [QSA,END]
RewriteRule ^/?([^/+])/([^/+])/([^/+])/([^/+])/([^/+])/([^/+])/?$ /index.php?$1=$2&$3=$4&$5=$6 [QSA,END]

您可能必须添加一些条件以防止干扰其他规则或重写循环。但是,如果不深入了解您的具体情况和设置,我们就无法知道这一点。

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 2019-12-11
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多