gpt4 book ai didi

php - 从 .htaccess 运行 PHP 代码?

转载 作者:可可西里 更新时间:2023-11-01 12:45:19 34 4
gpt4 key购买 nike

假设我有一个重写需要将 url 传递给 PHP 函数并检索一个值以告知新目的地应该是什么?有办法吗?

谢谢。

更新:

到目前为止谢谢大家..我仍然有问题,但我会告诉你我的代码:

.htaccess

#I got the file path by echoing DOCUMENT_ROOT and added the rest.
RewriteMap fixurl prg:/var/www/vhosts/mydomain.com/httpsdocs/domain_prototype/code_base/url_handler.php

RewriteEngine On
RewriteRule (.*) ${fixurl:$1} [PT]

PHP:

set_time_limit(0); # forever program!
$keyboard = fopen("php://stdin","r");
while (1) {
$line = trim(fgets($keyboard));
print "www.google.com\n"; # <-- just test to see if working.
}

但是我得到了一个500 Internal Server Error 我不确定我的 .htaccess 或我的 PHP 是否有错误?

最佳答案

有一种叫做 RewriteMap 的东西。

您可以调用一个可执行脚本,该脚本将返回要重写的 URL。

查看这篇文章以获取更多信息和示例(在 Perl 中,但完全适用于任何其他语言):

http://www.onlamp.com/pub/a/apache/2005/04/28/apacheckbk.html

注意事项总结:

  • 必须运行读取 STDIN 循环(即,不要在收到 URL 后退出)
  • 必须打印 URL 以使用尾随换行符重写
  • Apache 运行的用户必须是可读和可执行的

这是创建 map 的方式

RewriteMap fixurl prg:/usr/local/scripts/fixit.php

现在我们可以在 RewriteRule 中使用它:

RewriteEngine On
RewriteRule (.*) ${fixurl:$1}

编辑:关于内部服务器错误。最可能的原因是 Gumbo 提到的,很遗憾,RewriteMap 不能在 .htaccess 中使用。您可以在 .htaccess 中的 RewriteRule 中使用它,但只能在服务器配置或虚拟主机配置中创建它。要确定,请检查错误日志。

因此,唯一的 PHP/.htaccess 唯一解决方案是将所有内容重写到某个 PHP 程序,该程序使用 Location header 进行检查和重定向。像这样的东西:

RewriteRule (.*) proxy.php?args=$1 [QSA]

然后,在 proxy.php 中

<?php
$url = get_proper_destination($QUERY_STRING); #args will have the URI path,
#and, via QSA you will have
#the original query string
header("Location: $url");
?>

关于php - 从 .htaccess 运行 PHP 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1038648/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com