Remove trailing slashes

后端 未结 4 1721
清歌不尽
清歌不尽 2021-01-19 00:11

I\'d like to work with pages without trailing slashes. So now I want my URL\'s with an trailing slash to redirect (using .htaccess) to the same URL without the trailing slas

4条回答
  •  粉色の甜心
    2021-01-19 00:29

    Here is a an example from Apache documentation which you can use to solve your issue:

    Trailing Slash Problem

    Description:

    Every webmaster can sing a song about the problem of the trailing slash on URLs referencing directories. If they are missing, the server dumps an error, because if you say /~quux/foo instead of /~quux/foo/ then the server searches for a file named foo. And because this file is a directory it complains. Actually it tries to fix it itself in most of the cases, but sometimes this mechanism need to be emulated by you. For instance after you have done a lot of complicated URL rewritings to CGI scripts etc.

    Solution:

    The solution to this subtle problem is to let the server add the trailing slash automatically. To do this correctly we have to use an external redirect, so the browser correctly requests subsequent images etc. If we only did a internal rewrite, this would only work for the directory page, but would go wrong when any images are included into this page with relative URLs, because the browser would request an in-lined object. For instance, a request for image.gif in /~quux/foo/index.html would become /~quux/image.gif without the external redirect!

    So, to do this trick we write:

    RewriteEngine  on
    RewriteBase    /~quux/
    RewriteRule    ^foo$  foo/  [R]
    

    The crazy and lazy can even do the following in the top-level .htaccess file of their homedir. But notice that this creates some processing overhead.

    RewriteEngine  on
    RewriteBase    /~quux/
    RewriteCond    %{REQUEST_FILENAME}  -d
    RewriteRule    ^(.+[^/])$ $1/ [R]
    

    Source

提交回复
热议问题