将 .htaccess 与 FastCGI 一起使用

Posted

技术标签:

【中文标题】将 .htaccess 与 FastCGI 一起使用【英文标题】:Using .htaccess with FastCGI 【发布时间】:2011-05-06 06:40:25 【问题描述】:

我读过,当使用 FastCGI 运行 php 时,包含在我网站主目录中的 .htaccess 文件被忽略(现在我的 .htaccess 文件位于 /var/www/vhosts/mydomain.com/ httpdocs)我的问题是如何仅将 .htaccess 上的指令和标志应用于该域?我可以只为这个域创建一个 httpd.conf 吗?我应该将当前的 .htaccess 内容放在哪里以保持相同的设置正常工作?

非常感谢,

【问题讨论】:

但我需要使用 FastCGI...别无选择。 大声笑,这里解释的原因有点长,但由于权限问题,我需要使用 FastCGI 而不是 Apache 模块。所以我可以毫无问题地在我的文件夹中使用 .htaccess,即使使用 FastCGI? 天哪,多么具有建设性的反馈! “你不需要 FastCGI”......是的,我需要......“谁告诉你的”...... pff。如果您不能尊重他人(精心挑选的)选择并且不愿意提供帮助,请不要回应!很高兴看到其他人帮助了您 FidoBoy! 【参考方案1】:

只要在 httpd.conf 中启用了AllowOverride,Apache 就会读取 .htaccess 文件。您不能做的是将 PHP 指令放入 .htaccess 中:这仅适用于作为 Apache 模块安装的 PHP,并且会在 PHP 安装为 CGI 或 FastCGI 时导致500 Server error

某些配置(使用 suphp 和类似配置)允许使用本地设置的每个目录 php.ini。如果这不适用于您的设置,您可以仅使用一系列 ini_set() 指令更改 php.ini 设置(通常在包含的文件中)

【讨论】:

感谢 djn,我每个域都有一个 php.ini,但我可以将 htaccess 指令添加到 php.ini 中吗? RewriteCond、Options -Indexes、Options +FollowSymLinks...等 糟糕,对不起!我读错了。我不能使用的是 PHP 指令,但我可以使用 apache 指令。感谢您的信息! 我遇到了同样的问题,我的设置设置为“全部” - 你做了什么来解决这个问题? 如果您使用 PHP > 5.3,您可以使用 .users.ini 文件。它与 php.ini 相同,但它是每个目录(类似于 .htaccess,但用于 PHP 指令)php.net/manual/en/configuration.file.per-user.php

以上是关于将 .htaccess 与 FastCGI 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Apache中.htaccess文件利用的总结与新思路拓展

如何使 Zend Framework 2 与 nginx 一起工作?

用于fastcgi的bluehost rails public/.htaccess

使用 htaccess 删除扩展后,URL 不能与斜杠一起使用

未指定输入文件 - apache 和 php-fastcgi

使用 .htaccess 使所有 .html 页面作为 .php 文件运行?