扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
apache如何rewrite到虚拟目录?
<VirtualHost 127.0.0.1> 
        ServerName 127.0.0.1 
        DocumentRoot        "F:/website/bo_v3/www/" 
        Alias /php/        "F:/website/bo_v3/php/" 
        RewriteEngine on 
        RewriteRule ^/nba/game/text_([0-9]+)\.html\?*(.*)$ /php/nba/game_info\.php\?action=text&game_id=$1&$2 [L] 
</VirtualHost> 
F:/website/bo_v3/www/ 下没有php这个目录 
这个样子下,如果我访问http://127.0.0.1/nba/game/text_222.html,是会提示404的错误的。 
反复测试发现只要是虚拟目录的就不可以, 
必须在F:/website/bo_v3/www/下的目录中存在重写到的文件才可以正常使用。 
以前用iis,这个是可以实现的。 
在apache下如何实现呢…不要用反向代理,好像效率很低。
<VirtualHost 13.24.32.34:80> 
ServerName 127.0.0.1 
DocumentRoot F:/website/bo_v3/www/ 
<IfModule mod_rewrite.c> 
        RewriteEngine on 
        RewriteRule ^/nba/game/text_([0-9]+)\.html\?*(.*)$ /php/nba/game_info\.php\?action=text&game_id=$1&$2 [L] 
</IfModule> 
</VirtualHost> 
php/nba/game_info.php?action=text&game_id=444 会转向到 /nba/game/text_444.html ,但是你没有/nba/这个目录,所以404。 
解决的办法是照抄/php/的设置,把/nba/也用alias指到合适的位置
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。