Mil*_* M. 5 php url routing symfony symfony4
我一直在关注如何配置Web服务器的Symfony 4文档。
https://symfony.com/doc/current/setup/web_server_configuration.html
我的apache 2.4配置中的.conf文件与他们的文档中所述完全相同。我在这里复制了一部分:
<Directory /var/www/project/public>
AllowOverride None
Require all granted
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
</Directory>
Run Code Online (Sandbox Code Playgroud)
转到我的平台,一切正常,但是一旦我转到任何页面,它就会显示404错误。如果我在网址中添加index.php,则效果很好。您能帮我弄清楚发生了什么吗?
例如:当我在http://myplatform.com/上时
我可以在此页面上保存电子邮件地址。如果我访问http://myplatform.com/index.php/saveEmail,它可以工作,但是从我的页面上,我的链接将我重定向到http://myplatform.com/saveEmail,但它不起作用。
如果我转到http://myplatform.com/index.php,则一切正常。
如何从URL中删除index.php?
谢谢!
mah*_*fuz 11
我不知道Symfony。但它应该与所有apache2和php项目一起使用。
首先,您需要做两件事:
您需要检查是否启用了PHP重写模块。你可以做到phpinfo()。将其写入文件info.php并在浏览器中打开:http://localhost/info.php
现在搜索mod_rewrite。如果您mod_rewrite在此页面中看到,则表示mod_rewrite已启用。
mod_rewrite未启用,请启用它。我启用了在Ubuntu 18.04的Apache使用此命令:$ sudo a2enmod rewrite。然后重启apache2$ systemctl restart apache2mod_rewrite启用,则其他配置将起作用。然后添加AllowOverride All在.conf文件中:
<Directory /var/www/project/public>
AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)然后.htaccess在您的项目根目录中添加文件。
<IfModule mod_rewrite.c>
RewriteEngine On
# Send would-be 404 requests to Craft
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+) index.php?p=$1 [QSA,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)注意:尝试.htaccess在中/var/www/project/.htaccess或中添加文件/var/www/project/public/.htaccess。不知道什么会工作。
这个 apache 配置不包括对每个请求的 index.php 重定向。您有 2 个选择:
• 在同一页面上,有一个配置在这句话之后包含此重定向:“使用以下优化配置来禁用 .htaccess 支持并提高 Web 服务器性能:”
• 如果您想使用 .htaccess 来处理此重定向,那么您只需执行composer require apache-pack. 此命令将在您的公共目录中安装 .htaccess。
| 归档时间: |
|
| 查看次数: |
4119 次 |
| 最近记录: |