如何使用 xampp 和 apache 设置 web 根目录并在 localhost 中隐藏 app.php 和 app_dev.php?

Posted

技术标签:

【中文标题】如何使用 xampp 和 apache 设置 web 根目录并在 localhost 中隐藏 app.php 和 app_dev.php?【英文标题】:How to set the web root and hide app.php and app_dev.php in localhost using xampp and apache? 【发布时间】:2015-02-12 04:26:16 【问题描述】:

我在本地计算机上使用 symfony 进行编程。它的地址是http://localhost/RTL/web/app_dev.php/secure_area

如何将此地址更改为http://localhost/secure_area

我的意思是删除RTL/web/app_dev.php

我正在使用 xampp、apache 和 symfony 2.6。

其他地址可能是这样的:

http://localhost/RTL/web/app_dev.php/login    =>     http://localhost/login
http://localhost/RTL/web/app_dev.php/logout   =>     http://localhost/logout
http://localhost/RTL/web/app_dev.php/admin    =>     http://localhost/admin

【问题讨论】:

如果您在本地环境中工作,为什么要删除 app_dev.php?在任何情况下,RTL/web 只是简单地删除添加这样的指令:DocumentRoot "C:/xampp/htdocs/localhost/RTL/web"on 你的虚拟主机。 PS:将应用程序文件夹从 Web 根目录中取出是一种常见(也是最佳)做法。 谢谢。如果我想部署我的应用程序,我应该使用 app.php 而不是 app_dev.php。我怎样才能把它也删除??? 带有一些重写规则like here。请记住,您不能删除,只能从 url 中隐藏 app.php。让我知道这是否有效,我稍后会写答案。 谢谢@gp_sflover。这真的很有帮助:) 【参考方案1】:

根据cmets。

RTL/web 被删除,在 apache 的虚拟主机文件中添加指令 DocumentRoot "C:/xampp/htdocs/localhost/RTL/web"

然后您可以使用这些 apache mod_rewrite 规则隐藏 app.php:

RewriteEngine On  
RewriteCond %ENV:REDIRECT_STATUS ^$  
RewriteRule ^app\.php(/(.*)|$) %CONTEXT_PREFIX/$2 [R=301,L]
RewriteRule .? - [L]
RewriteCond %REQUEST_FILENAME -f
RewriteRule ^(.*)$ app.php [QSA,L]
RewriteCond %REQUEST_URI::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]    
RewriteRule .? %ENV:BASEapp.php [L]

然后重新启动 apache 服务器以应用修改。

【讨论】:

以上是关于如何使用 xampp 和 apache 设置 web 根目录并在 localhost 中隐藏 app.php 和 app_dev.php?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 xampp 打开 localhost:8080 而不仅仅是 localhost

在本地 xampp/apache 服务器上设置 SSL

如何彻底删除xampp

如何在 XAMPP(Windows)上设置 Apache 虚拟主机 [关闭]

xampp apache无法启动

apache 的 XAMPP 问题