如何从slim框架URL中删除index.php

Jac*_*rky 5 .htaccess rewrite centos slim

我正在尝试从URL中删除index.php:

这很有效

http://server/bw/index.php/test
Run Code Online (Sandbox Code Playgroud)

这不起作用

http://server/bw/test
Run Code Online (Sandbox Code Playgroud)

我尝试改变.htaccess并在网上观看我看到它应该是这样的:

RewriteEngine On
RewriteBase /bw/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)

我尝试以这种方式编辑它:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)

或以这种方式:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /bw/index.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)

或以这种方式:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试访问http://server/bw/test它时,我说:

Not Found

The requested URL /bw/test was not found on this server.

Apache/2.2.15 (CentOS) Server at server Port 80
Run Code Online (Sandbox Code Playgroud)

我检查我的内部httpd.conf LoadModule rewrite_module modules/mod_rewrite.so是启用..我不知道现在该做什么..

我怎么解决?请帮我!

Deh*_*ion 6

试试这个,例如在WordPress中使用

RewriteRule . index.php [L]
Run Code Online (Sandbox Code Playgroud)

或者这个,例如Lavavel PHP Framework使用的

RewriteRule ^(.*)$ index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)

您也可以考虑添加

RewriteCond %{REQUEST_FILENAME} !-d
Run Code Online (Sandbox Code Playgroud)

在RewriteRule之前还要排除现有目录,而不仅是现有文件.但这取决于你.