如何使用 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