.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]
比赛应该做的事情如下:
example.com
,它应该不包含任何内容,或者不进行定义example.com/
,它应该不包含任何内容,或者不进行定义example.com/some word
它应该包含some word
example.com/some word/
它应该包含some word
example.com/some word/?foo=bar
它应该包含some word
example.com/other\u word/
它应该包含other\u word
example.com/folder/file.ext,它应该包含folder/file.ext
example.com/some/other.dot?bar=foo
它应该包含some/other.dot
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
)的值已经更改。