d.r*_*aev 3 virtualhost apache-2.2
我正在处理一个 Web 项目,并且要求它在顶级域以及像这样的域+目录路径上运行良好:
www.myDomain.com
www.myDomain.com/somedir/myproject/
Run Code Online (Sandbox Code Playgroud)
该项目很好地处理包含文件,
但是我没有设置我的 VHosts 来测试第二种情况 www.myDomain.com/somedir/myproject/
我目前的设置尽可能简单:
127.0.0.1 www.myDomain.com
Run Code Online (Sandbox Code Playgroud)
NameVirtualHost *:80
<Directory C:/Projects>
Order Deny,Allow
Allow from all
</Directory>
<VirtualHost *:80>
DocumentRoot C:\wamp\www
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:\Projects\MyProject\public_html"
ServerName "www.myDomain.com"
</VirtualHost>
#@ToDo make this work ...
#<VirtualHost *:80>
# DocumentRoot "C:\Projects\MyProject\public_html"
# ServerName "www.myDomain.com/somedir/myproject/"
#</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)
我可以只使用虚拟主机吗?在本地机器上实现此设置的最佳实践是什么?
您需要的是别名,而不是虚拟主机。虚拟主机使用主机名,而不是主机名 + 目录。
<VirtualHost *:80>
DocumentRoot "C:\Projects\MyProject\public_html"
ServerName "www.myDomain.com"
Alias /somedir/myproject "C:\Projects\MyProject\public_html"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
编辑:
OP 的问题似乎有些不同,他的解决方案是使用 .htaccess 文件中的 RewriteRule 将不是实际物理文件的所有内容发送到 index.php。这是有效的,但将它们放在您的 httpd.conf(或包含文件中的文件)中效率更高。
有一种方法可以轻松地将工作的 RewriteRules 从 .htaccess 移动到 httpd.conf 而无需更改它们:使用容器。
因此,如果您在例如 /var/www/myproject 中有一个 .htaccess,您可以像这样移动到 httpd.conf。
<Directory /var/www/myproject>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php [NC,L]
</directory>
Run Code Online (Sandbox Code Playgroud)
将规则放在 .htaccess 文件中的优势在于,每个请求都会读取 .htaccess 文件。所以最好什么都不要。您可以将 RewriteRule 移出其目录上下文(以避免在每个匹配项上进行内部重定向)但是随后您必须修改模式,因为在服务器上下文中,它是您要匹配的整个 URL,而不仅仅是部分目录之后。
| 归档时间: |
|
| 查看次数: |
25760 次 |
| 最近记录: |