Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache .htaccess重写无法与虚拟主机的别名协同工作_Apache_.htaccess - Fatal编程技术网

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 for
application1/something/
通过使用
RewriteBase/application1/
解决了这个问题。我很困惑地认为它指的是文件夹而不是url。这个值用于从重写到的相对路径生成绝对路径。这是必需的,因为URL需要有绝对路径,而不是相对路径。因此,该设置确实会影响重写的URL。