Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess htaccess仅将路径从_请求提取到变量中_.htaccess_Environment Variables - Fatal编程技术网

.htaccess htaccess仅将路径从_请求提取到变量中

.htaccess htaccess仅将路径从_请求提取到变量中,.htaccess,environment-variables,.htaccess,Environment Variables,这应该是相当简单的,但经过几个小时的尝试和到处搜索,所有相关的答案都不够 到目前为止,我有: RewriteCond %{THE_REQUEST} /([a-zA-Z0-9-_/\.]+)? RewriteRule ^(.*)$ - [E=TRGT:%1] 比赛应该做的事情如下: 对于URLexample.com,它应该不包含任何内容,或者不进行定义 对于URLexample.com/,它应该不包含任何内容,或者不进行定义 对于URLexample.com/some word它应该包含some

这应该是相当简单的,但经过几个小时的尝试和到处搜索,所有相关的答案都不够

到目前为止,我有:

RewriteCond %{THE_REQUEST} /([a-zA-Z0-9-_/\.]+)?
RewriteRule ^(.*)$ - [E=TRGT:%1]
比赛应该做的事情如下:

  • 对于URL
    example.com
    ,它应该不包含任何内容,或者不进行定义
  • 对于URL
    example.com/
    ,它应该不包含任何内容,或者不进行定义
  • 对于URL
    example.com/some word
    它应该包含
    some word
  • 对于URL
    example.com/some word/
    它应该包含
    some word
  • 对于URL
    example.com/some word/?foo=bar
    它应该包含
    some word
  • 对于URL
    example.com/other\u word/
    它应该包含
    other\u word
  • 对于URL
    example.com/folder/file.ext,它应该包含
    folder/file.ext
  • 对于URL
    example.com/some/other.dot?bar=foo
    它应该包含
    some/other.dot
  • 对于URL
    example.com/thing.ext/?foo=bar&bar=foo
    它应该包含
    thing.ext
  • 到目前为止,我所做的似乎是有效的,除了当请求以
    some/
    -或
    some/?thing=wat
    结束时。。然后它包含
    some/

    我想我错过了一些非常简单的事情;任何帮助都将不胜感激,谢谢

    更新 我用以下代码成功地实现了这些确切的要求,但是,在尝试了多种方法以1行代码实现后,它失败得很厉害,所以我用了几行代码:

    RewriteCond %{THE_REQUEST} (?<=\s)(.*?)(?=\s)
    RewriteRule ^(.*)$ - [E=HREFPATH:%1]
    RewriteCond %{ENV:HREFPATH} (^.*)?\?
    RewriteRule ^(.*)$ - [E=HREFPATH:%1]
    RewriteCond %{ENV:HREFPATH} /(.*)
    RewriteRule ^(.*)$ - [E=HREFPATH:%1]
    RewriteCond %{ENV:HREFPATH} (.*)/$
    RewriteRule ^(.*)$ - [E=HREFPATH:%1]
    

    RewriteCond%{THE_REQUEST}(?根据接受的答案,以下内容满足问题的要求:

    RewriteCond %{THE_REQUEST} \s/+([^?]*?)/*[\s?]
    RewriteRule ^ - [E=HREFPATH:%1]
    

    我不知道是什么告诉它“修剪斜杠”为什么要首先检查_请求来执行此操作?显然,您只需要URL的路径组件,可选的尾随斜杠不匹配-因此仅使用RewriteRule就可以实现这一点。
    RewriteRule^(.*)/?$-[E=TRGT:$1]
    @CBroe-我之所以使用
    请求
    是因为出于某种天才的原因,在这种情况下,
    $1
    的值不是常数,与
    请求URI
    相同。它根据端点而变化;例如:如果
    重定向
    重写
    请求到其他地方,甚至在逻辑达到该点时,
    REQUEST\u URI
    (或
    $1
    )的值已经更改。