如何将Symfony项目URL从localhost/Website改为website/访问?
嗨,别担心,这个问题其实就是Web服务器虚拟主机的配置环节没搞定,你已经把hosts文件配置好了,接下来只需要把服务器的网站根目录指向Symfony项目的web文件夹,再加上对应的重写规则,就能实现用http://website/直接访问啦!我分两种常用的Web服务器给你详细说:
针对Apache服务器的配置步骤
- 找到Apache的虚拟主机配置文件位置:
- Linux系统一般在
/etc/apache2/sites-available/目录下 - Windows用XAMPP的话,路径是
C:\xampp\apache\conf\extra\httpd-vhosts.conf
- Linux系统一般在
- 创建或修改一个虚拟主机配置文件(比如命名为
website.conf),填入以下内容,记得替换/path/to/your/Website/web为你项目web目录的实际路径:
<VirtualHost *:80> ServerName website DocumentRoot /path/to/your/Website/web <Directory /path/to/your/Website/web> AllowOverride All Require all granted # 开发环境指定app_dev.php作为入口,生产环境可换成app.php RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app_dev.php [QSA,L] </Directory> ErrorLog ${APACHE_LOG_DIR}/website_error.log CustomLog ${APACHE_LOG_DIR}/website_access.log combined </VirtualHost>
- 启用配置并重启Apache:
- Linux下执行
sudo a2ensite website.conf,然后sudo systemctl restart apache2 - Windows的话要确保
httpd-vhosts.conf已经被包含在Apache的主配置文件httpd.conf里(一般需要去掉Include conf/extra/httpd-vhosts.conf前面的注释),然后重启XAMPP里的Apache服务
- Linux下执行
针对Nginx服务器的配置步骤
- 找到Nginx的虚拟主机配置目录:
- Linux系统一般在
/etc/nginx/sites-available/ - Windows下通常是
C:\nginx\conf\sites-available
- Linux系统一般在
- 创建
website.conf配置文件,填入以下内容,替换/path/to/your/Website/web为实际路径,同时注意fastcgi_pass的PHP-FPM路径要匹配你当前的PHP版本:
server { listen 80; server_name website; root /path/to/your/Website/web; location / { try_files $uri $uri/ /app_dev.php$is_args$args; } location ~ ^/app_dev\.php(/|$) { fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 比如PHP8.2的话就是php8.2-fpm.sock fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; internal; } error_log /var/log/nginx/website_error.log; access_log /var/log/nginx/website_access.log; }
- 启用配置并重启Nginx:
- Linux下执行
sudo ln -s /etc/nginx/sites-available/website.conf /etc/nginx/sites-enabled/,然后sudo systemctl restart nginx - Windows的话需要把这个配置文件通过
include指令添加到Nginx的主配置文件nginx.conf中,然后重启Nginx服务
- Linux下执行
额外提醒
- 一定要确保路径填写正确,比如Windows下可能是
C:\xampp\htdocs\Website\web,Linux下可能是/var/www/Website/web - 开发环境用
app_dev.php作为入口,要确保项目.env文件里的APP_ENV=dev;如果是生产环境,记得换成app.php - Linux系统下要确保
web目录的权限正确,可执行sudo chown -R www-data:www-data /path/to/your/Website/web赋予Apache/Nginx用户读写权限
内容的提问来源于stack exchange,提问作者Rockleader01
相关产品推荐
相关产品推荐

