apache 里有别名 aliases 重定向 redirecting 以及 重写 rewriting 功能,但是并不理解他们之间的联系与区别
它们分别是在什么情况下使用更合适呢
世界只因有你2017-05-16 17:06:34
联系与区别 ... 这话题可大可小 ... 这三个是完全不同的东西 ...
其中 alias 和 redirect 都是由 mod_alias
实现的 ... rewrite 是由 mod_rewrite
实现的 ...
alias 能实现的功能另外两个完全实现不了 ...
rewrite 可以实现 redirect 提供的所有功能且不仅于此 ... 当然作为代价 rewrite 的消耗也比较大 ...
使用场景的分别 ...
alias
提供的是 虚拟目录 的功能 ... 它可以把一个本无法通过 web 访问的区域映射到 web 上来 ...
举例而言假如你的网站根是 /var/www
... 通过 alias 可以访问到 /home/sunyanzi/public
...
redirect
提供的是 网页跳转 功能 ... 非常简单的从一个 URL 跳转到另外一个 URL ...
用个实际的例子举例 ... 当你访问 http://sf.gg 的时候就会跳转到 / ...
访问 http://sf.gg/bNT4C 的时候就会跳转到这个帖子 ... 这种行为都是 redirect ...
rewrite
提供的是 网页跳转 和 改变一个页面的 URL 的功能 ...
网页跳转刚刚解释过了 ... 改变页面 URL 的意思是 ... 假如你的网站上有这样一个功能 ...
http://yoursite.ext/script?model=user&action=detail&username=Sunyanzi
你觉得这个 URL 不好看 ... 你就可以将其 rewrite 为 http://yoursite.ext/u/Sunyanzi
...
和 redirect 的不同之处是当用户访问新地址的时候 ... 浏览器地址栏里的地址不会变化 ...
rewrite 同时也提供代理功能 ...
也就是说你可以把我的网站上的一个页面比如 http://mysite.ext/somepage
...
rewrite 到你的网站上变成 http://yoursite.ext/anotherpage
...
但前提条件是 rewrite 的目标必须也是在 web 可访问的区域上的 ...
恩恩 ... 大体就是这样 ... 有什么不明白的么 ..?
其实这些东西网上都有 ... 比我临时写的这个答案还更全面 ...
我我 ... 我就是闲的我 ... 我还手打一遍 ... 求安慰 ...