虚拟主机配置 Python Django 的 urls.py 的问题

问题描述:

在urls.py上面写的例如 url(r'^admin/', include(admin.site.urls)),

在网页上直接 python.域名.com/admin
会无法执行
但是,在public_html加一个admin文件夾,就可以執行成功
不过这样就有个问题 就是有些urls是这样生成的 python.域名.com/create/tag/1/ ; python.域名.com/create/tag/2/
我不可能每次都为它新增一个资料夹

解决方法:

1.首先用php檢測(使用Curl方法)是否第一次浏览不存在的文件夹,如是 服务器response 为 200
那么建立文件夹

2.下一步(使用Curl方法)再次检测这个浏览的位置,这次因为上面建立了文件夹,而顺利执行,

2.1.如果Django有对应的脚本,那么服务器response为302,那么就不需要删除这个文件夹了,可以永久保留

2.2如果Django没写对应位置的脚本,那么Django会报错,Python就会输出一个404页面给用户,也就是response 404,如上,如果服务器response 为 404,那么删除刚刚建立的文件夹 (防止恶意浏览不存在的位置导致ftp上面多了各种奇怪的文件夹)

如果不需要cookies的页面,这个方法可以说解决了

.htaccess写法:


PassengerAppRoot "/home/sokhang1/python"
PassengerBaseURI "/"
PassengerPython "/home/sokhang1/virtualenv/python/3.5/bin/python3.5"

请注意修改路径。

index.php写法

<?php
//200 進入空文件夾 //404 進入運作的python但是沒寫到該位置的腳本 //301 成功讀取html
?>

<?php
function mkdirs($dir, $mode = 0777)

{

if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE;

if (!mkdirs(dirname($dir), $mode)) return FALSE;

return @mkdir($dir, $mode);

}

?>
<?php
function Delete($path)
{
if (is_dir($path) === true)
{
$files = array_diff(scandir($path), array('.', '..'));

foreach ($files as $file)
{
Delete(realpath($path) . '/' . $file);
}

return rmdir($path);
}

else if (is_file($path) === true)
{
return unlink($path);
}

return false;
}

?>
<?php
$url = 'https://python.sokhang.com/'.$_GET["mkdir"];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true); // we want headers
curl_setopt($ch, CURLOPT_NOBODY, true); // we don't need body
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT,10);
$output = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpcode == 200){@mkdirs($_GET["mkdir"],0755);}
?>

<?php
$url = 'https://python.sokhang.com/'.$_GET["mkdir"];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true); // we want headers
curl_setopt($ch, CURLOPT_NOBODY, true); // we don't need body
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT,10);
$output = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$fh= file_get_contents($url);
echo $fh;
if($httpcode == 404){
@Delete($_GET["mkdir"]);

header('HTTP/1.1 404 Not Found', true, 404);
echo "404 error";
die();
}
?>

1 Star2 Stars3 Stars4 Stars5 Stars (无评分)
Loading...

分类:Cpanel控制面板 | 标签:,

QQ在线客服

QQ客服