我最近用 php mvc 魔法修复了我的网站,为此我在 .htaccess 中使用了这些设置:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-zA-Z0-9]*)/?([a-zA-Z0-9]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controller=$1&action=$2&arg=$3 [NC,L]
它就像一个魅力。我遇到的唯一问题是,当我相对引用 css 或图像之类的文件时,由于 url localhost/projectname/controllername/action/id 中的破折号,浏览器假定我们向下移动了文件夹结构
因此,在 localhost/controllername/action/id/css/styles.css 请求了 css/styles.css,其绝对路径解决了该问题,但在有本地测试服务器和远程实时和开发服务器后无法正常工作没有“项目名称”- 文件夹
我决定配置我的本地 wamp 服务器,以便我可以将我的不同项目作为子域访问到我的本地主机,如“ http://projectname.localhost ”。
我激活了相关的 apache 模块,编辑了我的 hosts 文件并将我的 httpd-vhosts.conf 更改为
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost.com
ServerAlias www.localhost.com
DocumentRoot "C:\wamp\www"
ErrorLog "logs\errors.log"
<directory "C:\wamp\www">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from all
</directory>
</VirtualHost>
<VirtualHost *:80>
ServerName localhost.com
ServerAlias *.localhost.com
VirtualDocumentRoot "C:\wamp\www\subdomains\%1"
ErrorLog "logs\errors.log"
<directory "C:\wamp\www\subdomains\%1">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from all
</directory>
</VirtualHost>
现在,当我调用 projectname.localhost.com/controllername/action/id 时,它告诉我在此服务器上找不到请求的 URL /subdomains/projectname/index.php。虽然 projectname.localhost.com/index.php 仍然为我提供了正确的文件。
我听说 $_SERVER['DOCUMENT_ROOT']; 可能有问题。这没有正确设置,但知道这还没有帮助我解决这个问题。
有人可以指出我正确的方向或建议在这些情况下进行测试的另一种环境配置吗?