Apache .htaccess重写无法与虚拟主机的别名协同工作
我有以下文件设置Apache .htaccess重写无法与虚拟主机的别名协同工作,apache,.htaccess,Apache,.htaccess,我有以下文件设置 /var/www |-app1 - index.php - .htaccess |-app2 - index.php - .htaccess 在虚拟主机中,我有一个别名设置,因为我想根据url为不同的应用程序提供服务: Alias /application1 /var/www/app1 Alias /application2 /var/www/app2 所有这些都可以正常工作:如果我访问/aplication1,但是如
/var/www
|-app1
- index.php
- .htaccess
|-app2
- index.php
- .htaccess
在虚拟主机中,我有一个别名设置,因为我想根据url为不同的应用程序提供服务:
Alias /application1 /var/www/app1
Alias /application2 /var/www/app2
所有这些都可以正常工作:如果我访问/aplication1
,但是如果我访问/application1/something/
,我会得到404,但这不应该发生,因为。htaccess
来自每个应用程序文件夹:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,NC,L]
</IfModule>
重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则。*index.php/$0[PT,NC,L]
知道我做错了什么吗?解决方案是在
.htaccess
中向RewriteBase添加别名。例:
RewriteBase /application1/
您是否考虑过
RewriteBase
指令的实际功能?我已经添加了RewriteBase/app1/
,我仍然得到了404 forapplication1/something/
通过使用RewriteBase/application1/
解决了这个问题。我很困惑地认为它指的是文件夹而不是url。这个值用于从重写到的相对路径生成绝对路径。这是必需的,因为URL需要有绝对路径,而不是相对路径。因此,该设置确实会影响重写的URL。