如何在apache RewriteCond httpd.conf中检查请求URI是否为空?

如何在apache RewriteCond httpd.conf中检查请求URI是否为空?,apache,mod-rewrite,Apache,Mod Rewrite,在中,我们可以使用它 RewriteCond %{REQUEST_URI} ^.$ 或 我需要检查它是否不是空的,然后将它重定向到一个空的(忽略HTTP\U主机后面的所有字符串) 我试过了 RewriteCond %{REQUEST_URI} !"^/$" RewriteRule .* http://%{HTTP_HOST} [L,R=301] 但不是工作。它只是造成了一个无休止的循环 我还尝试了RewriteCond%{REQUEST\u URI}^/$也重写cond%{REQUEST_

在中,我们可以使用它

RewriteCond %{REQUEST_URI} ^.$

我需要检查它是否不是空的,然后将它重定向到一个空的(忽略HTTP\U主机后面的所有字符串)

我试过了

RewriteCond %{REQUEST_URI} !"^/$"
RewriteRule .*  http://%{HTTP_HOST} [L,R=301]
但不是工作。它只是造成了一个无休止的循环

我还尝试了
RewriteCond%{REQUEST\u URI}^/$
重写cond%{REQUEST_URI}^\/$
RewriteCond%{REQUEST\u URI}”!^/$“
RewriteCond%{REQUEST\u URI}”!^\/$”

这个怎么样:


RewriteRule^/+$http://%{http\u HOST}[L,R=301]

它不起作用。当我尝试时,它确实重定向到。但随后,它引起了一个无休止的循环,一个只要求你的站点名(xx.com)的请求仍然会提供一些服务。你必须设置一个条件来忽略这件事。如果您只是请求站点名称(xx.com),那么您将得到DirectoryIndex指令指向的任何内容,默认值为/index.html。因此,您必须在前面添加一个条件,以避免执行该特定URI。例如:RewriteCond%{REQUEST_URI}^/index.html$RewriteRule^/+$http://%{http_HOST}[L,R=301]我试图用
RewriteRule.*进行调试http://test.com/%{REQUEST_URI}[L,R=301]
以确认最终请求的URI是什么。它向我显示请求URI是单个
/
。我还尝试了你的方法
RewriteCond%{REQUEST\u URI}^/index
(只需匹配任何潜在的索引名),它也不起作用。只要Cond指向正确的基础URI,RewriteCond和RewriteRule对就应该起作用。如果您对这些重写进行注释,跳出Apache并再次点击站点名称,会发生什么。浏览器中显示了什么?查看您的httpd.conf,看看DirectoryIndex条目指向什么。对不起,我以为这都是在主配置中。我不知道这是在vhost中,而你的主页是在.htaccess中定义的。这可能会带来更多的范围和优先权问题。。。也许不是。对配置的其余部分了解不够。根据您的解释,尝试将您的php URI插入条件:RewriteCond%{REQUEST_URI}^/news/test.php还请注意:您始终可以添加以下行以启用重写日志,并查看重写是否执行以及如何执行:RewriteLog logs/rewrite.log RewriteLogLevel 9
RewriteCond %{REQUEST_URI} !"^/$"
RewriteRule .*  http://%{HTTP_HOST} [L,R=301]