You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache配置:如何新增特定路径至内部URL的重定向规则

搞定Apache重定向的步骤

嘿,这个需求很常见,我给你一步步说怎么配置:

首先得确保Apache的mod_rewrite模块是开着的,不然重定向规则没用。先跑这两条命令:

sudo a2enmod rewrite
sudo systemctl restart apache2

接下来改你的虚拟主机配置文件,有两种靠谱的方式可以加规则,选哪种都行:

方式一:在现有Directory块里加规则

找到你已经有的<Directory /var/www/polo/current/public/>那块,先开启Rewrite引擎,再塞重定向规则进去就行:

<VirtualHost *:80>
    ServerAdmin me@mydomain.com
    DocumentRoot /var/www/polo/current/public

    <Directory /var/www/polo/current/public/>
        Options +FollowSymLinks +MultiViews
        # 先开Rewrite功能
        RewriteEngine On
        # 核心规则:把所有/telka开头的请求转到目标地址,子路径也能带上
        RewriteRule ^telka(.*)$ http://10.10.21.21/doc/test$1 [R=302,L]
        # 要是你确定这个重定向是永久的,把R=302改成R=301就行
        # 你原来的其他配置继续保留在这里...
    </Directory>

    # 其他原有配置不动...
</VirtualHost>

方式二:直接在VirtualHost根级别加规则

要是不想在Directory块里折腾,直接在VirtualHost最外层加也可以:

<VirtualHost *:80>
    ServerAdmin me@mydomain.com
    DocumentRoot /var/www/polo/current/public

    # 先开启Rewrite引擎
    RewriteEngine On
    # 同样匹配所有/telka开头的请求,包括后面带的子路径
    RewriteRule ^/telka(.*)$ http://10.10.21.21/doc/test$1 [R=302,L]

    <Directory /var/www/polo/current/public/>
        Options +FollowSymLinks +MultiViews
        # 你原来的其他配置不变...
    </Directory>

    # 其他原有配置照旧...
</VirtualHost>

给你解释下规则里的关键点:

  • RewriteEngine On:必须先开这个,不然所有Rewrite规则都是摆设
  • ^/telka(.*)$:这个正则会抓所有以/telka开头的URL,(.*)是把/telka后面的内容都存下来,比如用户访问http://mywebsite.com/telka/abc/123,这里就会抓到/abc/123
  • http://10.10.21.21/doc/test$1:目标地址里的$1就是把刚才抓到的子路径填进去,这样用户访问带子路径的地址也能正确跳转
  • [R=302,L]:R=302是临时重定向,搜索引擎不会更新索引;要是这个重定向是永久的(以后不会改回来),就换成R=301;L表示这条规则匹配上之后就不用管后面的规则了,避免冲突

配置完记得重启Apache让新规则生效:

sudo systemctl restart apache2

内容的提问来源于stack exchange,提问作者wawanopoulos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:42:29