更改 Apache 配置文件后的 Symfony 路由问题



我的symfony项目有一个问题,让我一步一步地解释我做了哪些更改。

  1. 我的旧工作项目:

我的旧项目的 URL 看起来像 http://127.0.0.1/my_project/something

httpd.conf 文件

Alias /my_project/something/auth /opt/www/my_project/auth
<Directory /opt/www/my_project/auth>
AllowOverride None
Require all Granted
</Directory>
Alias /my_project/something /opt/www/my_project/web
<Directory /opt/www/my_project/web>
AllowOverride None
Require all Granted
RewriteEngine On
RewriteBase /my_project/something
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+).(d+).(bmp|css|cur|gif|ico|jpe?g|m?js|png|svgz?|webp|webmanifest|pdf)$ $1.$3 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [PT]
</Directory>

我的路由文件看起来像

路由.yml 文件

# routes.yml
get_data:
path:     /api/select2/get-data
methods:  [GET]
defaults:
_controller: 'my_folderControllersIndexController::apiGetData'

该项目在上述配置下工作正常。

  1. 我的新项目在以下更改后停止工作:

现在我想像 http://127.0.0.1/my_project/something/MY-SLUG/一样更改网址

为此,我更改了我的httpd.conf文件,例如

新的httpd.conf

Alias /my_project/something/auth /opt/www/my_project/auth
<Directory /opt/www/my_project/auth>
AllowOverride None
Require all granted
</Directory>
Alias /my_project/something /opt/www/my_project/web
<Directory /opt/www/my_project/web>
AllowOverride None
Require all granted
DirectorySlash Off
RewriteEngine On
RewriteBase /my_project/something/
RewriteOptions AllowNoSlash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^.]+[^/]$ $0/ [R]
RewriteCond %{QUERY_STRING} !slug=
RewriteRule ^([a-zA-Z0-9-]+)/(.*)$ $2?slug=$1 [L,QSA]
RewriteRule ^([a-zA-Z0-9-]+)$ ?slug=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+).(d+).(bmp|css|cur|gif|ico|jpe?g|m?js|png|svgz?|webp|webmanifest|pdf)$ $1.$3 [L]
</Directory>

我没有更改我的route.yml文件,

我想在会话中设置MY-SLUG,然后在我的项目中的任何地方使用它,但是更改此设置后,我无法访问我的Symfony项目的任何路由。我不希望我的httpd.conf文件中的更改影响我的项目,我只想要URL中的MY-SLUG。

有什么解决方案吗?

我想你错过了

RewriteCond %{REQUEST_FILENAME} !-f

重写规则 ^(.*($ app.php [PT]

路由不起作用的原因是您的第二个配置没有指向Symfony的入口文件应用程序.php

最新更新