将丑陋的 URL 重定向到更干净的版本和/或同时重写它们
我一直在寻找将 http://www.mysite.com/about.html
更改为 http://www.mysite.com/about
的方法,但没有到目前为止运气好。
这可能吗?
I have been searching for ways to change http://www.mysite.com/about.html
to http://www.mysite.com/about
but had no luck so far.
Is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第 2-3 行处理原始请求包含 .html 的情况。该请求通过
[R=301]
标志转换为 301 重定向,并通过[L]
标志终止进一步处理。第 4 行充当第 5 行的条件。第 5 行执行正常 URL 重写。我只是将 .html 附加到任何不以 .html 结尾的 URL。
了解递归:
如果没有
RewriteCond
和[L]
标志,规则将创建无限循环。[R] 可以防止这种情况发生。
RewriteCond
会阻止这种情况,因为它检查浏览器发送的原始请求,而不是重写的请求。Lines 2-3 take care of the case when the original request contains .html. This request is translated to a 301 redirect via
[R=301]
flag and further processing is terminated via the[L]
flag.Line 4 acts as a condition for line 5. Line 5 does the normal URL rewriting. I just appends .html to any URL does not end with .html.
Understanding the recursion:
Without the
RewriteCond
and[L]
flags, the rules will create an infinite loop.[R]
prevents that.RewriteCond
will prevent that because it checks the original request sent by the browser, not the re-written one.尝试将其添加到您的 .htaccess 中:
try to add this in your .htaccess: