纤细的路线在服务器上不起作用
Slim routes not working on server
我正在 php slim 框架中创建 REST API,并且我使用起来很好。在本地,一切都 运行 完美,但我在 运行 在线时遇到了问题。我有大学的服务器,那里有很多学生项目所以我休息的路线 api 是:
/var/www/projects/myProject/bpsql
在 bpsql 文件夹中有 public、vendor 和 app 文件夹以及 composer.json 文件。在我的 public 文件中有 htaccess 文件导致了问题(我认为)。该文件应该如何查看,您认为我应该对此进行更改吗:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
我尝试添加行 RewriteBase projects/myproject/bpsql/public
但没有任何效果。
如有任何帮助,我们将不胜感激!
编辑:
apache modules on server got by `print_r(apache_get_modules());
Array
(
[0] => core
[1] => mod_log_config
[2] => mod_logio
[3] => mod_version
[4] => prefork
[5] => http_core
[6] => mod_so
[7] => mod_alias
[8] => mod_auth_basic
[9] => mod_authn_file
[10] => mod_authz_default
[11] => mod_authz_groupfile
[12] => mod_authz_host
[13] => mod_authz_user
[14] => mod_autoindex
[15] => mod_cgi
[16] => mod_deflate
[17] => mod_dir
[18] => mod_env
[19] => mod_mime
[20] => mod_negotiation
[21] => mod_php5
[22] => mod_reqtimeout
[23] => mod_rewrite
[24] => mod_setenvif
[25] => mod_ssl
[26] => mod_status
)
/var/www //echo getenv("DOCUMENT_ROOT") ;
我猜你在 Linux,但如果是的话。您似乎没有启用 mod 重写。所以以下内容可能会有所帮助。
a2enmod rewrite
service apache2 restart
但要更轻松地修复错误,请依赖 https://whosebug.com/help/mcve,更多有关设置和/或日志的信息会有所帮助。
好的,解决了这个问题,所以如果以后有人遇到同样的问题,这对我来说已经解决了:
- 在 apache 中启用重写模块(马丁的回答)
- 在 httpd 配置文件中,我将
AllowOverRide None
更改为 AllowOverride All
特别感谢@David Pastore 在解决问题过程中提供的所有帮助和帮助。
我正在 php slim 框架中创建 REST API,并且我使用起来很好。在本地,一切都 运行 完美,但我在 运行 在线时遇到了问题。我有大学的服务器,那里有很多学生项目所以我休息的路线 api 是:
/var/www/projects/myProject/bpsql
在 bpsql 文件夹中有 public、vendor 和 app 文件夹以及 composer.json 文件。在我的 public 文件中有 htaccess 文件导致了问题(我认为)。该文件应该如何查看,您认为我应该对此进行更改吗:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
我尝试添加行 RewriteBase projects/myproject/bpsql/public
但没有任何效果。
如有任何帮助,我们将不胜感激!
编辑:
apache modules on server got by `print_r(apache_get_modules());
Array
(
[0] => core
[1] => mod_log_config
[2] => mod_logio
[3] => mod_version
[4] => prefork
[5] => http_core
[6] => mod_so
[7] => mod_alias
[8] => mod_auth_basic
[9] => mod_authn_file
[10] => mod_authz_default
[11] => mod_authz_groupfile
[12] => mod_authz_host
[13] => mod_authz_user
[14] => mod_autoindex
[15] => mod_cgi
[16] => mod_deflate
[17] => mod_dir
[18] => mod_env
[19] => mod_mime
[20] => mod_negotiation
[21] => mod_php5
[22] => mod_reqtimeout
[23] => mod_rewrite
[24] => mod_setenvif
[25] => mod_ssl
[26] => mod_status
)
/var/www //echo getenv("DOCUMENT_ROOT") ;
我猜你在 Linux,但如果是的话。您似乎没有启用 mod 重写。所以以下内容可能会有所帮助。
a2enmod rewrite
service apache2 restart
但要更轻松地修复错误,请依赖 https://whosebug.com/help/mcve,更多有关设置和/或日志的信息会有所帮助。
好的,解决了这个问题,所以如果以后有人遇到同样的问题,这对我来说已经解决了:
- 在 apache 中启用重写模块(马丁的回答)
- 在 httpd 配置文件中,我将
AllowOverRide None
更改为AllowOverride All
特别感谢@David Pastore 在解决问题过程中提供的所有帮助和帮助。