我看到整个网络上都有这么多问题,但我现在找不到任何解决我特定的.htaccess问题的问题!在我的.htaccess文件中,我有规则将a)非www重定向到www和b)index.html到root。正在满足非www到www条件并成功重定向。但是,index.html文件不会重定向到根目录。
我还使用http://htaccess.madewithlove.be进行了测试。那里的调试日志表明“不支持这个变量:%{THE_REQUEST}”,随后,不满足index.html重定向的重写条件,但我无法猜测为什么或该变量是否是真正的罪魁祸首。我还要提到这个特定的域是另一个域的子域/附加域。下面描述的.htaccess文件位于子域的根目录中。主域级别的.htaccess文件目前为空白。
这是我现有的.htaccess内容:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.html?\ HTTP/
RewriteRule ^(.*)index\.html?$ http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
感谢您的帮助!
答案 0 :(得分:1)
在root .htaccess中保留这样的规则:
DirectoryIndex index.html
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L,NE]
RewriteCond %{THE_REQUEST} /index\.html [NC]
RewriteRule ^(.*?)index\.html$ /$1 [L,R=302,NC,NE]
在新浏览器中测试。
答案 1 :(得分:0)
放下第一个RewriteCond。它不是您需要的。仅第一个RewriteRule就可以解决您的问题。
也许您还想更新第一个RewriteRule
。在当前表单中,它将重定向(无论使用哪个域)到http://www.example.com/。如果您想“保留”使用过的子域,请将重定向设为相对:
RewriteRule ^(.*)index\.html?$ /$1 [R=301,L]