通过.htaccess将所有HTML无扩展名URL链接到HTML扩展名 - 具有URL

时间:2016-01-09 21:02:19

标签: html .htaccess

我之前发现了几个类似的问题,但似乎没有一个具体的解决方案。我所追求的是如下;在极少数情况下,访问者忘记将.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>

2 个答案:

答案 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]
  1. 我们想在js或css文件扩展名
  2. 之后添加.html
  3. 我们检查网址是否已包含.html扩展名
  4. 我们检查网址是否为空
  5. 您可以过滤不包含.字符的网址,而不是列出可接受的扩展程序。

    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>