我之前发现了几个类似的问题,但似乎没有一个具体的解决方案。我所追求的是如下;在极少数情况下,访问者忘记将.html扩展名添加到网址的末尾(但是在字符串中正确输入其他内容),我希望将它们定向到他们所针对的页面, .html扩展名。
可能的?
当前.htaccess代码:
ErrorDocument 404 /404.html
#Canonical
RewriteCond %{HTTP_HOST} ^domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteRule ^index\.html$ "http\:\/\/www\.domain\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#Blocking
<IfModule mod_setenvif.c>
Order Allow,Deny
Allow from all
Deny from 123.151.39.
Deny from 186.219.44.6
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} (.*)\.crimea\.com [NC,OR]
RewriteCond %{HTTP_HOST} s368\.loopia\.se [NC,OR]
RewriteCond %{HTTP_HOST} kanagawa\.ocn [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (huaweisymantecspider|sitesnagger|spam|sucker|webcopier|webreaper|webstripper) [NC]
RewriteRule .* - [F,L]
</IfModule>
答案 0 :(得分:0)
您可以在.htaccess
文件中试用此代码。
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.(css|js|jpg|png|gif)$
RewriteCond %{REQUEST_URI} !\.html$
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1.html [L,R=301]
您可以过滤不包含.
字符的网址,而不是列出可接受的扩展程序。
RewriteEngine On
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1.html [L,R=301]
答案 1 :(得分:0)
尝试以下内容。
我还简化了您的代码(首先检查www.
,然后删除index.html
,然后添加.html
扩展名(如果文件实际存在的话。)
ErrorDocument 404 /404.html
<IfModule mod_rewrite.c>
RewriteEngine On
# Force www.
RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,NC,L]
# Remove index.html
RewriteRule ^index.html$ / [R=301,L]
# Add .html extension if file exists
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [R=301,L]
</IfModule>
# Blocking
<IfModule mod_setenvif.c>
Order Allow,Deny
Allow from all
Deny from 123.151.39.
Deny from 186.219.44.6
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} (.*)\.crimea\.com [NC,OR]
RewriteCond %{HTTP_HOST} s368\.loopia\.se [NC,OR]
RewriteCond %{HTTP_HOST} kanagawa\.ocn [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (huaweisymantecspider|sitesnagger|spam|sucker|webcopier|webreaper|webstripper) [NC]
RewriteRule .* - [F,L]
</IfModule>