繁体   English   中英

重定向301-从网址中删除.html扩展名

[英]Redirect 301 - remove .html extension from URLs

我想从我的网址中删除.html扩展名,并将其重定向到特定目录并重定向301。

这是结构的样子:

mysite.com/category/nameofcategory/pagenumber.html

问题是nameofcategorypagenumber可以是任何字母或数字。

你能帮我这个忙吗?

要删除URL上的.html扩展名和301重定向到无扩展名的URL,可以在“特定目录”中的.htaccess中尝试以下操作:

RewriteEngine On
RewriteBase /specific-directory
RewriteRule ^(.*)\.html$ $1 [R=301,L]

我不建议您将内容分散在不同文件夹中的许多html文件中。 例如,如果您想更改页面的布局,这将变得非常不切实际。

将内容存储在数据库中是一个更好的解决方案。 如果那不可能,那么html文件可能只包含格式化的文本内容,而后端脚本可以在请求页面时将该内容嵌入到布局中。

这要求在Apache配置中启用mod_rewrite模块。

在这两种情况下,所有请求都将通过后端脚本进行路由,.htaccess可能类似于以下内容:

RewriteEngine on
RewriteRule ^category/([^/.]+)/([^/.]+)/?$ index.php?category=$1&page=$2 [L]

正则表达式的这一部分: ([^/.]+)匹配并捕获不包含/或字符的字符串。 且长度为1个字符或更长。 捕获的字符串可以用$ 1,$ 2等引用。

现在,像mysite.com/category/foo/bar这样的漂亮网址可以正常工作。 另外,我们需要定义一个规则来重定向以“ .html”结尾的旧URL。 所需的规则可能如下所示:

RewriteRule ^category/([^/.]+)/([^/.]+).html$ category/$1/$2 [R=301,L]

在测试和调整重定向时要记住的一件事是,重定向可能会缓存在浏览器中,这可能导致测试时的结果令人困惑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM