好吧,我不确定这是不是我,但我刚刚遇到了PHP的Slim框架,看起来很简单,很容易围绕更好的应用程序。我确定它是我的.htaccess文件,我不知道我到底做错了什么。
所以这适用于Slim:
http://testvm/index.php/hello/4412
但是这个
http://testvm/hello/4412
给我一个未发现的错误,来自Apache,
这个
http://testvm/
从Slim返回404错误(或者至少我认为它是瘦的404)。
对于服务器故障,这可能是一个更好的问题,但它可能是我设置Slim的方式,我对此非常新,以及我用来安装Slim的PHP Composer。
这是我的index.php文件
<!doctype html><html>
<head><meta charset="utf-8"><title>Untitled Document</title></head> <body>
<?php
require 'vendor/autoload.php';
$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
echo "Hello, $name";
});
$app->run();
?>
</body></html>
这是我当前的.htaccess文件
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
#RewriteRule ^$ /testvm/index.php/ [L]
#RewriteRule (.*) /testvm/index.php/$ [L]
如果我取消注意最底层的两条规则,我会收到服务器500错误?
我已经尝试了
RewriteEngine On
RewriteBase /my_app/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
这使得“/testvm/index.php/hello/XXXX”可以工作,但是我想让它在URL中没有任何index.php文件的情况下工作?我确信这必须与我的.htaccess文件有关。
现在我在Ubuntu 13.04的VM(虚拟机)中运行它,它已经完全更新,而不是13.10 let。我已经检查过了,并且在我的这个虚拟机的apache构建中的modes-enable文件夹中列出了rewrite.load。
那么我做错了什么?
所有人都欢迎。 :)
格伦。
答案 0 :(得分:1)
您可以在DOCUMENT_ROOT/testvm/.htaccess
文件中尝试此规则:
RewriteEngine On
RewriteBase /
RewriteRule ^$ /testvm/index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^testvm/((?!index\.php/).+)$ /testvm/index.php/$1 [L,NC]
答案 1 :(得分:0)
我已经推销了你的答案是对的,因为你给了我很多帮助,我已经让它工作了,使用以下代码,
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php [QSA]
所以现在如果我去testvm /我得到一个苗条的404错误,当加载testvm / hello / TESTNAMEEXAMPLE时,它会加载。
希望我上面的代码可以帮助其他人。
格伦。