我只是用PHP开发一个小型WebApp,并且使用AltoRouter进行路由。
到目前为止,我只在脱机开发和测试,所以在本地主机上。现在,要查看服务器上的行为,我上传了代码,修复了数据库连接以适合服务器上运行的MySQL-Server(Ubuntu 14.04),并尝试使其启动。
首先,我正在做的路由是一个简单的.htaccess
,看起来像这样:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
然后在我的index.php
中完成路由
<?php
include 'vendor/altorouter/altorouter/AltoRouter.php';
$router = new AltoRouter();
$router->setBasePath('');
$router->map('GET','/','home.php','home');
$router->map('GET','/datenschutz','datenschutz.php','datenschutz');
$router->map('GET','/impressum','impressum.php','impressum');
$router->map('GET','/header','header.php','header');
$router->map('GET','/jquery','vendor/components/jquery/jquery.js','jquery');
$router->map('GET','/bootstrapjs','vendor/twbs/bootstrap/dist/js/bootstrap.js','bootstrapjs');
$router->map('GET','/bootstrapcss','vendor/twbs/bootstrap/dist/css/bootstrap.css','bootstrapcss');
$router->map('GET','/generalStyle','style.css','generalStyle');
$match = $router->match();
if($match) {
if($match['name'] === 'generalStyle'){
header("Content-Type: text/css");
$fileName = $match['target'];
echo file_get_contents($fileName);
return;
}
require $match['target'];
}
else {
header("HTTP/1.0 404 Not Found");
require '404.php';
}
?>
这在我的本地主机上可以很好地工作,因此通常似乎没有问题。
但是,在我的服务器上,当转至IP时,它首先似乎正在运行,因为仅在转到/
时,home.php
文件已正确加载。但是,无论我叫什么其他路线,例如/impressum
,它都不起作用,回到/
,home.php
再次起作用。
现在,将home.php
(在路由中)替换为impressum.php
也可以正常工作,那么我也可以看到正确的文件。
因此,总而言之,似乎总是只有第一条可行的路线。
有人有一个主意,为什么会发生或者是什么问题?
我试图直接调用文件,并且(除了一些未加载的脚本等)可以正常工作,因此转到myDomain.com/impressum.php
可以正常工作,因此似乎不是文件问题或某事。
我还尝试将Hole项目的权限设置为755,以确保这不是问题,但结果相同。
有什么想法吗?
编辑:我一直在尝试很多,但仍然没有奏效。...但是,我认为这不是“第一条路线”,而是/
-路由正在运行。其他所有路由均不起作用,但是同样,一切都在运行XAMPP的localhost上运行。
答案 0 :(得分:0)
最后,我解决了问题。
所有与PHP,AltoRouter,htaccess或其他无关...
解决方案是在df.million_values = df.dollar_values.apply(lambda x: x/1000000)
配置的AllowOverride
中将All
设置为Directory
。...