【发布时间】:2012-08-26 12:40:23
【问题描述】:
我束手无策...我正在尝试做一些简单的事情,但我不明白出了什么问题...
我只是试图将所有请求带到域,并将它们路由到 index.php
为清楚起见进行编辑:index.php 作为请求的调度程序,作为框架的一部分。
我在本地机器上可以正常工作,但在服务器上(带有 Plesk 的 VPS Linux)我遇到了各种各样的问题...
为清楚起见进行编辑:这些规则在虚拟主机的 vhost.conf 配置文件中定义。
这是 mod_rewrite:
<IfModule rewrite_module>
RewriteEngine On
RewriteRule ^/.* /index.php
</IfModule>
这是我尝试访问“www.mydomain.com/home/index”时的 apache 错误日志(例如):
[debug] core.c(3072): [client xxx.xxx.xxx.xxx] r->uri = /phppath/cgi_wrapper/phppath/cgi_wrapper/phppath/cgi_wrapper/home/index
[debug] core.c(3078): [client xxx.xxx.xxx.xxx] redirected from r->uri = /phppath/cgi_wrapper/phppath/cgi_wrapper/home/index
[debug] core.c(3078): [client xxx.xxx.xxx.xxx] redirected from r->uri = /phppath/cgi_wrapper/home/index
[debug] core.c(3078): [client xxx.xxx.xxx.xxx] redirected from r->uri = /home/index
从跟踪中可以看出,它似乎将 /home/index 重定向到 /phppath/cgi_wrapper/,然后似乎又被传递到 /phppath/cgi_wrapper/phppath/cgi_wrapper/home/index,等等直到达到最大内部重定向。
一个 HTTP 500 被发送到浏览器。
进一步编辑 - 额外信息。从我从 Plesk 分散文件的方式中可以看出,这是对虚拟主机有影响的仅有的两行。我认为这可能是那个 Action 声明......我可以在 vhost.conf 中以某种方式覆盖它吗?
in php-cgi.conf:
ScriptAlias /phppath/ "/var/www/cgi-bin/cgi_wrapper/"
Action php-script /phppath/cgi_wrapper
in php.conf:
AddHandler php5-script .php
进一步编辑:在动态生成的 conf 文件中找到了这个(在虚拟主机级别)。
<Files ~ (\.php)>
SetHandler None
AddHandler php-script .php
Options +ExecCGI
allow from all
</Files>
有人对正在发生的事情有任何想法吗?我已经拉头发两天了...提前谢谢
【问题讨论】:
-
您为什么要将所有请求重定向到一个页面?如果您描述了您想要实现的目标,它将帮助人们提供建议。
-
另外,你能告诉我们这些规则是在站点公共根目录的 .htaccess 文件中,还是在适用于整个服务器的 httpd.conf 文件中?
-
嗨 - 我正在尝试将请求路由到单个页面,因为该页面充当调度程序。它是框架的一部分。规则直接在 vhost.conf 文件中定义(其中为每个虚拟主机定义了文档根目录、服务器名称等)
-
嗨,我已经尝试过了,但我仍然在 apache 日志中得到相同的结果。我不认为 mod_rewrite 语法有问题 - 正如我所说,它在本地运行良好。我想了解为什么我在 apache 日志中看到那些奇怪的消息,以及重定向的“堆积”。值得注意的是,如果我将 RewriteRule 中的“index.php”替换为“index.html”(其中 index.html 是一个静态 html 文件),则重定向工作正常。
标签: php apache mod-rewrite plesk