【问题标题】:htaccess: redirect first folder to get paramhtaccess:重定向第一个文件夹以获取参数
【发布时间】:2016-12-18 05:26:01
【问题描述】:

我对正则表达式和 apache 网络服务器的 .htaccess 文件非常陌生。

我想重写一个 url,以便将第一个子文件夹转换为 GET 参数,并且以下所有子文件夹应保持原样...

几个例子:
http://www.example.com/thisisthevariable
应重写为
index.php?p=thisisthevariable


http://www.example.com/thisisthevariable/test.jpg
应重写为
test.jpg?p=thisisthevariable


http://www.example.com/thisisthevariable/subfolder/and/another/sub/folder/123.gif
应重写为
subfolder/and/another/sub/folder/123.gif?p=thisisthevariable

它应该适用于无限数量的子文件夹。所以除了第一个目录之外应该使用整个路径 - 这应该用作目标文件的获取参数。

希望,任何人都理解我的任务并可以帮助我:-)

谢谢!!

【问题讨论】:

    标签: regex apache .htaccess redirect mod-rewrite


    【解决方案1】:
    RewriteRule ^([^/]+)$ index.php?p=$1
    RewriteRule ^([^/]+)/(.+) $2?p=$1
    

    [^/]+ 匹配任何不是正斜杠的东西,所以第一部分在第一个 / 之前。 () 将其捕获为匹配项,然后以$1(和$2)的形式提供。详情请见http://www.regular-expressions.info/refquick.html

    【讨论】:

    • 不幸的是,这不起作用... :-( 当我使用此 RewriteRule 时,我得到一个空响应...当我将第二行更改为 RewriteRule ^([^/]+) /(.+) index.php?o=$2&p$1 两个 GET 参数都正确传输,但我无法打开文件编辑:抱歉,我没有得到空结果,但我得到了 index.php 的结果(它什么也没返回,因为我只回显了 get-param)。为什么打开的是我的 index.php 而不是文件?
    • 好吧,我不确定您对subfolder/and/another/sub/folder/123.gif 有什么期望,尤其是附加了查询字符串。 应该如何处理...?
    • 嗯,我确实有一个客户门户。客户应输入我的 url/customerid,例如 example.com/deceze 我想在我的 php-script 中知道哪个用户正在请求我的脚本,并且我还想在子文件夹中放置一些用于网站设计的图像...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2021-08-05
    • 2021-02-19
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多