我有两个虚拟主机,由Apache Web服务器提供服务。一台主机用于PHP应用程序,另一台主机用于Django / Python应用程序。他们俩都工作良好,我对此没有任何问题。此时,我的httpd-vhosts.conf看起来像这样:
Listen 8080
<VirtualHost *:8080>
DocumentRoot "c:/Apache24_32/htdocs/accent"
ServerName php.localhost
<Directory c:/Apache24_32/htdocs/accent>
Options Indexes FollowSymLinks
AllowOverride None
Order Deny,Allow
Allow from all
</Directory>
DirectoryIndex
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
</VirtualHost>
<VirtualHost *:8080>
ServerName django.localhost
WSGIScriptAlias / "c:/Apache24_32/htdocs/django/accent/wsgi.py"
<Directory "c:/Apache24_32/htdocs/django/accent">
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
没事的 当我转到时php.localhost
,我看到了我的PHP应用程序,当我转到时django.localhost
,我看到了我的Django应用程序。好的。但是我想要实现的是将请求从我的第一个PHP应用程序重定向到Django应用程序,这样,只要/django/
URL中包含部分,我都将被重定向到django.localhost
。例如,这个网址
php.localhost:8080/django/
应该映射到
django.localhost:8080
和这个网址
php.localhost:8080/django/test
应该映射到
django.localhost:8080/test
我试图使用重写规则,但无济于事。这是我尝试的:
Listen 8080
<VirtualHost *:8080>
DocumentRoot "c:/Apache24_32/htdocs/accent"
ServerName php.localhost
<Directory c:/Apache24_32/htdocs/accent>
Options Indexes FollowSymLinks
AllowOverride None
Order Deny,Allow
Allow from all
</Directory>
DirectoryIndex
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
#New lines
RewriteEngine on
RewriteRule "^django/(.*)$" "django.localhost:8080/$1"
</VirtualHost>
<VirtualHost *:8080>
ServerName django.localhost
WSGIScriptAlias / "c:/Apache24_32/htdocs/django/accent/wsgi.py"
<Directory "c:/Apache24_32/htdocs/django/accent">
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
如您所见,我已经将这两行添加到第一个虚拟主机描述中:
RewriteEngine on
RewriteRule "^django/(.*)$" "django.localhost:8080/$1"
但是,它不起作用。我这样检查。在我的index.php页面中,添加了参考:
<a href="/django">Go to Django!</a>
但是,当我单击它时,我被重定向到http://php.localhost:8080 / django并看到以下错误消息:
未找到
在此服务器上找不到请求的URL / django。
我不太擅长配置Apache,希望有人能帮助我。非常感谢!
聚苯乙烯
我应该补充一点,这行在httpd.conf中没有注释:
LoadModule rewrite_module modules/mod_rewrite.so
在VirtualHost上下文中,RewriteRule Pattern最初将与主机名和端口之后,查询字符串之前的URL部分匹配,因此它在开始处带有斜杠。这应该做:
RewriteRule ^/django/(.*)$ http://django.localhost:8080/$1"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句