.htaccess 将访问重定向到根目录

.htaccess 将访问重定向到根目录,.htaccess,redirect,.htaccess,Redirect,我想将对mysite.com/mydir/的访问重定向到mysite.com/mydir/index.html mydir中有一个.htaccess配置文件,但它不能按预期工作: RewriteCond %{REQUEST_URI} ^/ Rewriterule ^(.*)$ index.html [L,R=301] 现在,当我转到mysite.com/mydir/时,我被重定向到: mysite.com/mydir/C:/wamp/www/mysite/index.html 如果改为使用:

我想将对mysite.com/mydir/的访问重定向到mysite.com/mydir/index.html

mydir中有一个.htaccess配置文件,但它不能按预期工作:

RewriteCond %{REQUEST_URI} ^/
Rewriterule ^(.*)$ index.html [L,R=301]
现在,当我转到mysite.com/mydir/时,我被重定向到:

mysite.com/mydir/C:/wamp/www/mysite/index.html
如果改为使用:

Rewriterule ^(.*)$ /index.html [L,R=301]
我被重定向到

mysite.com/index.html
唯一有效的方法是:

Rewriterule ^$ /mydir/index.html [L,R=301]

但是我不想硬编码mydir,因为这个.htaccess可能在另一个目录中使用。这个问题可以通过模块化的方式解决吗?

我无法测试这个问题,因为我没有在本地安装apache,但问题是如果您尝试的话,您没有将paren中的组附加到url的开头

Rewriterule ^(.*)$ $1/index.html [L,R=301]
然后它将在URL开头的任何字符前面加上前缀,即mydir/before index.html

RewriteCond %{REQUEST_URI} /$ 
Rewriterule (.*) http://%{HTTP_HOST}%{REQUEST_URI}index.html [L,R=301]

您可以尝试以下(
.htaccess
存储在
mydir
中的文件):


您是否尝试过重写规则^(.*)$$1/index.html[L,R=301]不幸的是,这会重定向到mysite.com/index.html,我也尝试过添加/,例如:/$1/index.html,但随后它重定向到:mysite.com//index.html(2斜杠)对不起,我的意思是将重写规则^(.*)$$1index.html[L,R=301]。我已经在测试过了-这仍然不起作用吗?我得到了到mysite.com/mydir/C:/wamp/www/mysite/index.html的重定向,这很奇怪,可能是wamp配置的问题?Rewriterule^/(.*)/$localhost:8080/$1/index.html[L,R=301](将8080更改为wamp运行的端口)
RewriteEngine on
RewriteBase /mydir/

RewriteCond %{REQUEST_URI} ^/mydir/$ [NC]
RewriteRule ^ index.html [R=301,L]