首页 > 解决方案 > 将子文件夹请求重定向到乘客

问题描述

我想mysite.com/subfolder/...通过Passenger将所有请求重定向到Django应用程序,并将所有其他请求重定向到在某些php cms下运行的网站。

文件结构:

根目录.htaccess

RewriteEngine on

... RewriteConds and RewriteRules generated by php cms

内容subfolder/.htaccess

PassengerAppRoot "/home/username/djangoapplication"
PassengerPython "/home/username/virtualenv/webapp/2.7/bin/python2.7"

问题是关于 root .htaccess。当 root.htaccess为空(仅限 constails RewriteEngine on)时,类似的请求mysite.com/subfolder/...subfolder/.htaccessDjango 应用程序加载处理。但是当 root.htaccess包含由 php cms 生成的行时,所有请求都会mysite.com/subfolder/...从 cms 导致 404 错误页面。

所以我想从 cms 过滤像before s 这样的请求mysite.com/subfolder/...,将其替换为 404 错误页面,但我不知道该怎么做。subfolder/.htaccessRewriteRule

标签: djangoapache.htaccessmod-rewritepassenger

解决方案


如果根文件只包含 mod_rewrite 指令,那么您可以通过简单地启用重写引擎.htaccess来完全覆盖根文件。.htaccess/subfolder/.htaccess

例如:

RewriteEngine On    

PassengerAppRoot "/home/username/djangoapplication"
PassengerPython "/home/username/virtualenv/webapp/2.7/bin/python2.7"

默认情况下,mod_rewrite 指令默认被继承(与其他模块不同)。但是,有可能在您的服务器配置中专门启用了 mod_rewrite 继承,因此这可能不起作用。

如果这不起作用,那么您需要在根.htaccess文件的顶部创建一个异常,以防止请求/subfolder/被覆盖。例如:

RewriteRule ^subfolder - [L]

当URL.htaccess/subfolder.


推荐阅读