告诉Rails忽略特定的URL并让Apache处理

Nic*_*ett 3 apache ruby-on-rails

我通过Passenger在我的Apache服务器上运行了一个rails应用程序.

偶尔我会为网站使用一些PHP脚本,并将它们放在公共目录中.

当我去/ php /我希望Apache使用PHP解析器处理请求并让rails忽略它.

目前我可以去/php/index.php,它工作正常.但是我需要/ php /才能正常工作但是rails一直在寻找控制器来处理它.

我有一种感觉这与apache重写规则有关,但我无法弄明白.

我用过

RewriteEngine On 
RewriteRule ^php - [L] 
RewriteBase / 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
Run Code Online (Sandbox Code Playgroud)

在/php/.htaccess文件中,但这不起作用.我仍然得到Rails的页面未找到错误.

Xav*_*olt 5

我认为你可以在你的Passenger应用程序的主要Apache配置文件中执行此操作 - 这与此类似

<Directory "/.../myapp/php">
    PassengerEnabled off
    AllowOverride all
</Directory>
Run Code Online (Sandbox Code Playgroud)

你的VirtualHost块内应该可以解决问题(关闭Rails,至少 - 打开PHP取决于你!).

我的答案基于ModRails Apache 文档 - 有关该PassengerEnabled命令的更多信息,请参见第5.6节.