【发布时间】:2020-08-29 19:32:36
【问题描述】:
我的 symfony 项目有问题,让我一步一步解释我做了哪些更改。
- 我的旧工作项目:
我的旧项目的 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>
我的路线文件看起来像
routes.yml 文件
# routes.yml
get_data:
path: /api/select2/get-data
methods: [GET]
defaults:
_controller: 'my_folder\Controllers\IndexController::apiGetData'
项目在上述配置下运行良好。
- 我的新项目在更改后停止工作:
现在我想更改 URL,例如 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。
有解决办法吗?
【问题讨论】:
标签: php apache symfony routes httpd.conf