Apache 试图将某个目录重定向到文件名

Apache 试图将某个目录重定向到文件名,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我想截获两个特定目录的HTTP请求: /mydir/ /thisdir/ RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.+)/ $1.html [QSA] 每当有人请求这两个选项中的一个时,应该分别为他们提供/mydir.html和/thisdir.html。所有其他目录应正常运行 我可以让它在所有目录下工作: /mydir/ /thisdir/ RewriteCond %{REQUEST_FILENAME} -d RewriteRul

我想截获两个特定目录的HTTP请求:

/mydir/
/thisdir/
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)/ $1.html [QSA]
每当有人请求这两个选项中的一个时,应该分别为他们提供
/mydir.html
/thisdir.html
。所有其他目录应正常运行

我可以让它在所有目录下工作:

/mydir/
/thisdir/
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)/ $1.html [QSA]
但我试图让它只适用于两个特定的目录:

RewriteCond %{REQUEST_FILENAME} ^/(mydir|thisdir)/$
RewriteRule ^(.+)/ $1.html [QSA]

结果显示目录索引。

您可以使用以下规则:

RewriteCond %{THE_REQUEST} /(mydir|thisdir) [NC]
RewriteRule ^(mydir|thisdir)/?$ $1.html [L,NC]
这个怎么样

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/(mydir|thisdir)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}$1.html [R=301]

您是否尝试过在RewriteCond条件的末尾添加一个尾随斜杠?是的,像这样的
^/(mydir | thisdir)/$
和这样的
^/(mydir/| thisdir/)$
。尝试禁用多视图(
选项-多视图
)–在处理这样的情况时,它经常会产生干扰。您是要
/mydir/
还是
/mydir
?@JonLin我两种方法都试过了,都不管用。按您编写的方式试过了--结果相同:目录索引出现了。它对我的Apache有效。您正在输入
http://domain.con/mydir/
/mydir/
是否也具有访问权限?还有更多的规则吗?
/mydir/
而另一个没有
.htaccess
,除了我现在测试的内容,网站上没有其他
.htaccess
规则。我实际上是在一个子目录dev环境中工作的,所以它实际上是
http://domain.com/dev/mydir/
domain.com
的根目录没有
.htaccess
规则。是!就这样。谢谢所以<代码> \s/+(Mydir.Tydir)< /C>从根抓取它,但是<代码> /(Mydir.Tydir)< /C>只是从URI的结尾抓取它,对的,这个正好匹配在URL的中间,但是<代码> RewriteRule ^(Mydir?Tydir)(/*)?$< /代码>从当前目录的开始匹配它。同样的结果显示目录索引。