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

时间:2013-01-08 22:39:43

标签: .htaccess centos rewrite slim

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

这是有效的

http://server/bw/index.php/test

这不起作用

http://server/bw/test

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

RewriteEngine On
RewriteBase /bw/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

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

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

或以这种方式:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /bw/index.php [QSA,L]

或以这种方式:

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

但是当我尝试访问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

我检查httpd.conf LoadModule rewrite_module modules/mod_rewrite.so内部是否已启用..我现在不知道该怎么办..

我该如何解决?请帮帮我!

3 个答案:

答案 0 :(得分:6)

试试这个,例如,在WordPress中

RewriteRule . index.php [L]

或者这个,例如, Lavavel PHP框架

RewriteRule ^(.*)$ index.php/$1 [L]

您也可以考虑添加

RewriteCond %{REQUEST_FILENAME} !-d
在RewriteRule之前

还要排除现有目录,而不仅是现有文件。但这取决于你。

答案 1 :(得分:0)

对我来说,我从Dehalion的回答中得到了这条线:

RewriteRule . index.php [L]

因此在请求网址中看不到index.php(或任何xyz.php)文件

http://localhost/demo1/mycompany/hello/Jim

有以下警告:

  1. 您已定义此路线:

    $ app-> get('/ mycompany / hello /:name',doHello);

  2. 根元素(对于route / mycompany / ..) 也是 文件的名称。
    也就是说,路由存在于名为“mycompany.php”

  3. 的文件中

    是的,这有点像黑客......但是因为我发现apache配置令人困惑/恐吓:) ...我认为这个解决方案足够稳定以满足要求。

答案 2 :(得分:0)

就我而言,我更新了AllowOverride All, 然后运行sudo a2enmod rewrite以避免内部500错误,然后重新启动Apache service apache2 restart