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

wz8daaqr  于 2022-11-16  发布在  其他
关注(0)|答案(4)|浏览(144)

我想从url中删除.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]

我想从这个网址http://localhost/demo/blog/test.html中删除.html。所以如果有人输入这个网址,.html应该被htaccess http://localhost/demo/blog/test/从网址中删除。
而需要添加此规则的只有博客目录。
我希望有人帮我。

vktxenjb

vktxenjb1#

试试这个

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]
uwopmtnx

uwopmtnx2#

首先将此代码复制粘贴到.htaccess文件中。

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

然后更改导航栏/链接上的网址,如下所示↓ From <a href="about.html"> to <a href="about">
它应该工作,也尽量不要把大写字母放在你的文件名上;这不是一个好的做法

o2gm4chl

o2gm4chl3#

这样就行了

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链接来帮助您解决问题。

vbkedwbf

vbkedwbf4#

您可以在/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]

相关问题