【发布时间】:2020-01-27 18:58:00
【问题描述】:
在我的项目的根文件夹中,还有其他几个我称之为“应用程序”的文件夹。这些应用程序之一的路径类似于:/root_folder/myapp/...
实际上有十几个这样的应用程序。所以我希望我的项目使用友好的 URL,并使用 apache 模块 mod_rewrite 来实现。
我将以下规则添加到我的 .htaccess 中(即在 root_folder 中,让您知道)RewriteRule ([^/]*)/(.*)?$ myDomain.com/$1/index.php?params=$2 [NC,L]
因此,诸如 mydomain/myApp/param/value/param2/value 之类的 URL 将被转换为 mydomain/myApp/index.php?params=value/param2/value
我执行了一些测试并看到它可以正常工作,直到我添加 $1 来引用应用程序文件夹(查看:the_path_to_my_root_folder_here/$1/index.php?params=$2) 这些应用程序之一的路径类似于:`/root_folder/myapp/...** 它正在生成一个 URL,例如:myDomain.com/myApp/index.php?params=index.php
好吧,我认为这将是一个递归问题。所以看起来Apache会在第一次执行后尝试另一个重定向,然后它会生成一个这样的URL
我在 Stack Overflow 中找到了 this thread 答案的问题在于它假设我知道何时停止。
你知道如何停止第二次重定向吗?
我现在正在尝试以下规则
RewriteRule myDomain.com/([A-Za-z0-9-]+)/(.*)$/ myDomain.com/$1/index.php?params=$2 [NC,L],但它无法正常工作。如果我不在应用程序名称后传递参数,它只匹配正则表达式。因此,当我尝试 myDomain.com/user/ 时,它可以工作(不接收参数),而当我尝试 myDomain.com/user/products/1000/ 时,它会失败。它不是重写/重定向,而是尝试在 user 和 etc
【问题讨论】:
标签: php apache .htaccess mod-rewrite url-rewriting