Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
路由到.htaccess中的/public和index.php_Php_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

路由到.htaccess中的/public和index.php

路由到.htaccess中的/public和index.php,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我有一个基于Slim framework的PHP应用程序,在/public目录中有静态文件和以下.htacces文件: 当我试图访问/index.php时,Apache会直接返回它,但我希望它被传递到index.php,它将返回404 not found。我怎么做 如果我试图删除RewriteCond%{REQUEST_FILENAME}-f: Apache返回我内部服务器错误。我怎样才能完成它 Upd:我的项目结构 www/ ├── app/ ├── cache/ ├── public/ │ 

我有一个基于Slim framework的PHP应用程序,在/public目录中有静态文件和以下.htacces文件:

当我试图访问/index.php时,Apache会直接返回它,但我希望它被传递到index.php,它将返回404 not found。我怎么做

如果我试图删除RewriteCond%{REQUEST_FILENAME}-f:

Apache返回我内部服务器错误。我怎样才能完成它

Upd:我的项目结构

www/
├── app/
├── cache/
├── public/
│   ├── css/
│   ├── img/
│   └── js/
├── vendor/
├── views/
└── index.php

最好的方法是删除.HTACCESS文件,或者使用


DirectoryIndex public_html www-html

你的重写规则一团糟

RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f
RewriteRule ^ %{DOCUMENT_ROOT}/public%{REQUEST_URI} [L]
如果DOCUMENT_ROOT/public%{REQUEST_URI}是一个文件,那么您要告诉Apache的是。但是,在您的设置中,DOCUMENT_ROOT已经是public/。这就是你混乱的根源

请考虑以下情况:

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.+)$ /public/$1 [L]

 RewriteRule ^$ ./index.php [QSA,L]

Apache已经为您进行了文件名转换,您正试图使用DOCUMENT_ROOT进行转换,但它如何帮助我?我只想显示来自~/www/public的静态文件(如果存在),并将其他请求重定向到~/www/index.php。。。并使用您的.htaccess,但当我尝试访问/时,它返回内部服务器错误。请参阅有关我的项目结构的更新。这应该更精简一些@再次出现内部服务器错误:由于可能的配置错误,请求超出了10个内部重定向的限制。如有必要,使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。@俄罗斯物理学家:在此之前,您是否碰巧有任何不是文件中最后一条的重写规则?您是否发现了这一点?我的设置几乎相同,但我也无法让它工作。
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f
RewriteRule ^ %{DOCUMENT_ROOT}/public%{REQUEST_URI} [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.+)$ /public/$1 [L]

 RewriteRule ^$ ./index.php [QSA,L]