Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.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 DirectoryIndex指令不能与Ruby on Rails一起正常工作_Apache_Passenger_Mod Alias_Directoryindex - Fatal编程技术网

Apache DirectoryIndex指令不能与Ruby on Rails一起正常工作

Apache DirectoryIndex指令不能与Ruby on Rails一起正常工作,apache,passenger,mod-alias,directoryindex,Apache,Passenger,Mod Alias,Directoryindex,我有一个站点,RubyonRails通过PhusionPassenger在根目录下运行。一些ApacheAlias指令服务于静态HTML目录 如果您从其中一个静态目录请求文件的精确URL,Apache将按预期返回该URL。然而,在一些情况下,我没有得到预期的行为。考虑别名别名/函数/路径/函数/>代码>,其中函数目录包含索引x.php和hello .jpg .< /p> 请求按预期返回JPEG文件 请求将运行PHP脚本并按预期打印生成的HTML文档 请求将导致Rails堆栈中的404 请求(不带

我有一个站点,RubyonRails通过PhusionPassenger在根目录下运行。一些Apache
Alias
指令服务于静态HTML目录

如果您从其中一个静态目录请求文件的精确URL,Apache将按预期返回该URL。然而,在一些情况下,我没有得到预期的行为。考虑别名<代码>别名/函数/路径/函数/>代码>,其中函数目录包含索引x.php和hello .jpg .< /p>
  • 请求按预期返回JPEG文件
  • 请求将运行PHP脚本并按预期打印生成的HTML文档
  • 请求将导致Rails堆栈中的404
  • 请求(不带尾随斜杠)也会导致Rails堆栈中出现404。理想情况下,此URL应返回一个301,将用户重定向到
  • 如果我将index.html文件添加到功能目录中(除了已经存在的index.php),路径#3和#4会按预期返回该文件

    以下是我的Apache乘客配置文件中的相关部分:

    LoadModule passenger_module /path/to/mod_passenger.so
    LoadModule ssl_module modules/mod_ssl.so
    
    <IfModule mod_passenger.c>
        # ... passenger setup stuff omitted ...
    
        Listen 443
        <VirtualHost *:443>
            ServerName ...
            DocumentRoot /path/to/rails/public
            PassengerRuby /path/to/ruby
            <Directory /path/to/rails/public>
                Allow from all
                Options -MultiViews
            </Directory>
    
            #  ... ssl setup omitted ...
    
        </VirtualHost>
    </IfModule>
    
    LoadModule passenger\u module/path/to/mod\u passenger.so
    LoadModule ssl\u module modules/mod\u ssl.so
    # ... 乘客设置的东西省略了。。。
    听我说
    服务器名。。。
    DocumentRoot/path/to/rails/public
    PassengerRuby/path/to/ruby
    通融
    选项-多视图
    #  ... ssl安装程序省略。。。
    
    对于静态目录:

    Alias /functional /path/to/functional/
    Alias /phpMyAdmin /path/to/phpMyAdmin/
    # ... other aliases omitted ...
    
    <Directory /path/to/functional>
        DirectoryIndex index.php
        AllowOverride all
    </Directory>
    
    Alias/functional/path/to/functional/
    别名/phpMyAdmin/path/to/phpMyAdmin/
    # ... 省略了其他别名。。。
    DirectoryIndex.php
    允许超越所有
    
    我已经尝试了中的大多数答案来加载index.php,但没有成功。我甚至不需要指定
    DirectoryIndex.php
    ,因为该行已经在conf.d/php.conf中了


    如果Rails在Apache堆栈中的其他位置提供404 URL,您对如何解决这个问题有何想法?

    您是否尝试过替换这些URL

    <Directory /path/to/functional>
    
    
    


    我也有同样的问题。工作解决方案只是virtualhost服务乘客中的
    重定向匹配
    语句,如下所示:

    RedirectMatch  ^/path/to/functional(/)?$  /path/to/functional/index.php
    
    RedirectMatch  ^/path/to/functional(/)?$  /path/to/functional/index.php