我需要像这样重定向所有index.html
原始网址
所需网址
我使用了以下内容,它成功重定向但是404页面
RewriteEngine On
RewriteRule ^index\.html$ [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
答案 0 :(得分:2)
你几乎把它弄好了,你做的对我来说看起来像是一个复制粘贴错误。你的第一个RewriteRule缺少一个参数 - 在[R=301,L]
你的htaccess应该是这样的:
RewriteEngine On
RewriteRule ^index\.html$ / [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
参考: http://dense13.com/blog/2012/10/29/removing-index-html-with-mod_rewrite-in-htaccess/
答案 1 :(得分:1)
将此代码放在DOCUMENT_ROOT/.htaccess
文件中:
DirectoryIndex index.html
RewriteEngine On
RewriteCond %{THE_REQUEST} /index\.html [NC]
RewriteRule ^(.*?)index\.html$ /$1 [L,R=301,NC,NE]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1/index\.html -f [NC]
RewriteRule ^(.+?)/?$ /$1/index.html [L]
答案 2 :(得分:0)
尝试将其放入.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1/index\.html [PT,L]
PT和L是重写标志,有关它们的更多详细信息,请检查http://httpd.apache.org/docs/2.2/rewrite/flags.html
答案 3 :(得分:0)
为什么不重定向索引。(任何内容)?喜欢index.php?的index.xhtml?
RewriteEngine On
RewriteRule ^index\.(.*)$ / [R=301,L]
RewriteRule ^(.*)/index\.(.*)$ /$1/ [R=301,L]
或仅基于初始URL请求(以避免与其他重写规则冲突):
RewriteEngine On
RewriteCond %{THE_REQUEST} /index\.(.*) [NC]
RewriteRule ^(.*?)index\.(.*)$ /$1 [R=301,L]