已解决)如何从超薄框架 url 中删除 '/index.php'

SOLVED)How to remove '/index.php' from slim framework url

我的开发环境是

Ubuntu 14.04.6 LTS

阿帕奇 2.4.7

mysql 是 5.6.33

我的目录是

/var/www/html/your-app
                   |--public
                   |-- .htaccess
                   |      `-- index.php
                   `--app
                       |-- src
                       |    |-- controllers
                       |    |       `-- WebController.php
                       |    `-- models
                       |            `-- WebModel.php
                       |-- templates
                       |    |-- main.html
                       |    `-- signup.html
                       |-- dependencies.php
                       |-- middleware.php
                       |-- routes.php
                       `-- settings.php

slim 框架的根路径工作正常。

my_slim_url/index.php

my_slim_url

// load the same page

但是,像这样在我的主屏幕上移动到另一个link

my_slim_url/signup

这条消息,

'The requested URL / register_email was not found on this server.' 

显示。

我已经尝试了 Whosebug 上的所有答案,但都没有用。

这是我服务器的一些代码,可能会有用。

如果您告诉我有任何问题或修复目前我还没有找到,

非常感谢你的帮助。

希望大家编码无误...:D

apache2.conf

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<Directory /var/www/html/public>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<ifModule dir_module>
    DirectoryIndex index.php
</ifModule>

AccessFileName .htaccess

<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

/sites-available/000-default.conf

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Require all granted
 </Directory>

<Directory /var/www/html/your-app/public>
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

/var/www/html/your-app/pulbic/.htaccess

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

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

根据 Slim Framework user guide,您的 .htaccess(位于 /var/www/html/your-app/public/.htaccess)应包含:

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

我解决了这个问题!!!!!

首先,运行这个函数:

$ sudo a2enmod rewrite

其次,检查你的 apache2.conf 目录 url:

 <Directory /var/www/html/public>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

原来是,我改成了这样,

<Directory /var/www/html/your-app/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

第三,重启你的apache服务

$ sudo service apache2 restart

那么,成功了!!!

谢谢大家回答我的问题!!! :D