[英]Redirect 301 - remove .html extension from URLs
我想从我的网址中删除.html
扩展名,并将其重定向到特定目录并重定向301。
这是结构的样子:
mysite.com/category/nameofcategory/pagenumber.html
问题是nameofcategory
和pagenumber
可以是任何字母或数字。
你能帮我这个忙吗?
要删除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.