5

我正在尝试从 URL 中删除 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是否启用..我现在不知道该怎么办..

我该如何解决?请帮我!

4

3 回答 3

6

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

RewriteRule . index.php [L]

或 this,例如 Lavavel PHP Framework 使用的

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

您也可以考虑添加

RewriteCond %{REQUEST_FILENAME} !-d

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

于 2013-01-08T22:48:26.740 回答
1

在我的情况下,我更新了AllowOverride All,然后运行sudo a2enmod rewrite以避免内部 500 错误,然后重新启动 Apacheservice apache2 restart

于 2015-07-14T09:18:49.963 回答
0

对我来说,我使用 Dehalion 的回答中的这条线来工作:

RewriteRule . index.php [L]

所以在请求 url 中看不到 index.php(或任何 xyz.php)文件

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

有以下注意事项:

  1. 您已定义此路线:

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

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

是的,这有点骇人听闻......但因为我发现 apache 配置令人困惑/令人生畏:)......我认为这个解决方案足够稳定,可以满足要求。

于 2013-08-04T20:30:14.500 回答