我想将mysite.com/subfolder/...
之类的所有请求重定向到乘客上的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"
问题出在根.htaccess
上。当根.htaccess
为空(仅占用RewriteEngine on
)时,mysite.com/subfolder/...
之类的请求将由subfolder/.htaccess
处理,并且Django应用程序会加载。但是,当根.htaccess
包含php cms生成的行时,所有类似mysite.com/subfolder/...
的请求都会导致cms出现404错误页面。
因此,我想在mysite.com/subfolder/...
之前将来自subfolder/.htaccess
的请求过滤到RewriteRule
,然后将其替换为404错误页面,但是我不知道该怎么做
答案 0 :(得分:1)
如果根app.controller('PlotsController', function ($scope, $http, growl, CRUDServiceSchemes, CRUDServicePlots, Upload, $timeout) {
$scope.SavePlots = function (isValid, files) {
if ($scope.VentureName == null || $scope.VentureName == undefined) {
$scope.pventure = false;
}
else {
if (isValid) {
var plots = {
vID: $scope.VentureName,
PlotNo: $scope.PlotNo,
PlotArea: $scope.PlotArea
}
$scope.SelectedFiles = files;
if ($scope.SelectedFiles && $scope.SelectedFiles.length) {
Upload.upload({
url: '/SuperAdmin/AddVenture/CreatePlots',
data: {
files: $scope.SelectedFiles
}
}).then(function (response) {
$timeout(function () {
$scope.Result = response.data;
});
}, function (response) {
if (response.status > 0) {
var errorMsg = response.status + ': ' + response.data;
alert(errorMsg);
}
}, function (evt) {
var element = angular.element(document.querySelector('#dvProgress'));
$scope.Progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));
element.html('<div style="width: ' + $scope.Progress + '%">' + $scope.Progress + '%</div>');
});
}
$http({
method: 'POST',
url: '/SuperAdmin/AddVenture/CreatePlots',
data: { plots: plots },
dataType: 'JSON',
headers: { 'content-type': 'application/json' }
}).then(function (response) {
if (response.data == "SUCCESS") {
$scope.VentureName = null;
$scope.PlotNo = '';
$scope.PlotArea = '';
$scope.pventure = true;
$scope.validation = true;
CRUDServicePlots.getPlots().then(function (result) { $scope.Plot = result; });
growl.success('Successfully Added');
}
else {
growl.warning('Some thing went wrong, please try again.', { title: 'Warning!' });
}
});
}
}
}
});
文件仅包含mod_rewrite指令,则只需在.htaccess
中启用重写引擎,就可以完全覆盖根.htaccess
文件。
例如:
/subfolder/.htaccess
默认情况下,默认情况下不继承mod_rewrite指令 (与其他模块不同)。但是,可能已在服务器配置中专门启用了mod_rewrite继承,所以这可能行不通。
如果这不起作用,则需要在根RewriteEngine On
PassengerAppRoot "/home/username/djangoapplication"
PassengerPython "/home/username/virtualenv/webapp/2.7/bin/python2.7"
文件的顶部创建一个例外,以防止覆盖.htaccess
的请求。例如:
/subfolder/
当URL以RewriteRule ^subfolder - [L]
开头时,这会停止在根.htaccess
文件中进行进一步的处理。