获取RewriteCond目录标志工作,而不用斜杠

我正在尝试检测现有的目录,支持在URL中使用和不使用尾部斜杠,但是不对丢失的斜杠进行redirect。 这是规则:

RewriteCond /home/user/public_html%{REQUEST_URI} -d RewriteRule ^ /home/user/public_html%{REQUEST_URI} [L] RewriteCond /home/user/public_html%{REQUEST_URI}/ -d RewriteRule ^ /home/user/public_html%{REQUEST_URI}/ [L] 

当URL包含结尾斜线时,第一条规则正常工作,但第二条规则不适用于没有尾随斜线(例如/ foobar / works但/ foobar不)。

我怎样才能设置这个没有做30倍的redirect?

您可以同时使用这两个规则,如下所示:

 # Rewrite sites with trailing slash this way... RewriteCond %{REQUEST_URI} ^.*\/$ RewriteCond /home/user/public_html%{REQUEST_URI} -d RewriteRule ^ /home/user/public_html%{REQUEST_URI} [L] # Rewrite sites without trailing slash this way... RewriteCond %{REQUEST_URI} ^.*[^\/]$ RewriteCond /home/user/public_html%{REQUEST_URI}/ -d RewriteRule ^ /home/user/public_html%{REQUEST_URI}/ [L] 

这些正则expression式是从我的头上,并没有经过testing。 而我还没有喝咖啡。