如何使用htaccess从url中删除.html

时间:2015-08-07 12:12:26

标签: php .htaccess

我想从网址中删除.html。为此我正在尝试跟随。但不确定出了什么问题,不能解决我的问题。

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*).html\ HTTP/
RewriteRule .* http://localhost/demo/blog/test.html%1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*)\ HTTP/
RewriteRule .* %1.html [L]

我想从此网址.html中删除http://localhost/demo/blog/test.html。 因此,如果有人输入此网址,则应通过htaccess从网址中删除.html http://localhost/demo/blog/test/

并且只需要为博客目录添加此规则。

我希望有人帮助我。

3 个答案:

答案 0 :(得分:1)

试试这个

Options +FollowSymlinks -MultiViews
    RewriteEngine on

    # to make `/path/index.html` to /path/
    RewriteCond %{THE_REQUEST} ^GET\s(.*/)index\.html [NC]
    RewriteRule . %1 [NE,R=301,L]

    RewriteCond %{THE_REQUEST} ^GET\s.+\.html [NC]
    RewriteRule ^(.+)\.html$ /$1 [NE,R=301,L,NC]

    RewriteCond %{REQUEST_URI} !\.html$ [NC]
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule . %{REQUEST_URI}.html [L]

答案 1 :(得分:0)

应该这样做。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301] 

修改1

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

编辑3

根据评论中的建议,请确保mod_rewriteenabled。使用this链接来帮助您。

答案 2 :(得分:0)

您可以在/demo/blog/中使用这些规则:

RewriteEngine On
RewriteBase /demo/blog/

RewriteCond %{THE_REQUEST} \s(.+?)\.html?\s [NC]
RewriteRule ^ %1 [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+?)/?$ $1.html [L]