今儿咱来聊聊这个叫 RewriteBase 的玩意儿。先说说我是咋碰上这事儿的。我,最近不是在折腾那个网站服务器嘛就想搞点 URL 重写,让网址看起来更顺眼点儿,也方便用户记住。于是我就开始鼓捣那个 .htaccess 文件,里面写一堆 RewriteRule 规则。
我把网站放在服务器的根目录下,一切都挺顺利,重写规则也生效,网址也变得漂亮。可我寻思着把网站挪到一个子目录里头,比如说叫 "mywebsite" 。这一挪可问题来,原来那些重写规则都不好使,网址也乱套。
我这琢磨半天,到处找资料,后来才发现,原来是因为我把网站放到子目录里,而之前的重写规则都是基于根目录写的。这就像啥,你本来在北京找地址,现在突然搬到上海,那之前的地址肯定就不对?
然后我就发现这个 RewriteBase 的东西。这玩意儿是干啥的?简单来说,它就是用来告诉服务器,你的网站现在放在哪个目录下。这样一来,那些 RewriteRule 规则才能根据新的目录来正确地重写 URL。
那咋用?也简单,就在你的 .htaccess 文件里头,加上这么一行:
- RewriteBase /你的子目录名/
比如说,我的网站现在放在 "mywebsite" 这个子目录下,那我就写:
- RewriteBase /mywebsite/
然后,保存 .htaccess 文件,刷新一下网页,你猜怎么着?那些重写规则又都好使,网址也恢复正常!
所以说,这个 RewriteBase ,虽然看起来不起眼,但关键时刻还真能派上用场。特别是当你把网站从根目录挪到子目录,或者从一个子目录挪到另一个子目录的时候,一定要记得更新这个 RewriteBase 的设置,不然你的 URL 重写规则可就要罢工!
这事儿也让我长个教训,以后再折腾网站的时候,一定要多留个心眼儿,特别是涉及到路径的问题,可不能马虎。
总结
今儿的分享就到这儿。RewriteBase就是用来指定URL重写基本目录的。如果你把网站放在子目录下,就得用它来告诉服务器,你的网站在哪儿。不然重写规则就都乱套。好好,这回就说这么多,希望大伙儿都能明白。要是还有啥不清楚的,随时来问我,咱一起研究!