我遇到.htaccess问题,我已成功重写网址,但内容已不再加载。
以下是我的htaccess文件。
我的目标是我所有的.html页面(该网站由.html静态页面构成)以删除其扩展名。但是,我要求将.html网址301重定向到新网址,以便我的搜索引擎优化不会受到这些更改的影响。
示例:
原始网址重定向新网址非常重要。
Options +FollowSymLinks
RewriteEngine on
# REDIRECT yourdomain.com TO www.yourdomain.com
RewriteCond %{HTTP_HOST} !^www.example.co.uk$ [NC]
RewriteRule ^(.*)$ http://www.example.co.uk/$1 [L,R=301]
RewriteRule (.+)\.html?$ http://www.example.co.uk/$1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(([^/]*/)*[^/.]+)$ $1.html [L]
我已经尝试了上面的htaccess,我也尝试了下面的变化,但两者都没有按预期工作。任何帮助将不胜感激。
Options +FollowSymLinks
RewriteEngine on
# REDIRECT yourdomain.com TO www.yourdomain.com
RewriteCond %{HTTP_HOST} !^www.example.co.uk$ [NC]
RewriteRule ^(.*)$ http://www.example.co.uk/$1 [L,R=301]
RewriteRule (.+)\.html?$ http://www.example.co.uk/$1/ [R=301,L]
答案 0 :(得分:0)
你需要改变两件事。
在重定向后立即添加此项以防止重定向循环:
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
将最后一条规则更改为:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1\.html -f
RewriteRule ^ /%1.html [L]