图像URL上的PHP脚本的URL重写

时间:2020-08-11 作者:w.jelsma

我构建了一个图像随机化器,这样当我打开一个。显示图像的URL中的php文件readfile($randomImage);. 这在本地起作用,但当我将其上载到服务器时,它会被防火墙阻止,因为我们不想加载URL,如

https://www.example.com/wp-content/themes/THEME/randomImage.php
我想加载一个.php 在上编写脚本.jpg 文件需要做的是,当我使用URL时(例如)

https://www.example.com/image.jpg
当我加载这个图像时,它会运行一个PHP文件,就像

https://www.example.com/randomizer.php
换句话说,我希望WordPress认为它正在加载一个以.jpg 但打开了.php 文件

这是可以实现的吗?

2 个回复
SO网友:MrWhite

.htaccess 现有WordPress指令之前的文件:

# Internally rewrite "/image.jpg" to "/randomizer.php"
RewriteRule ^image\\.jpg$ randomizer.php [L]
这将使用mod\\u rewrite重写URL。无需重复RewriteEngine On 指令(稍后在文件中出现)。

任何要求/image.jpg (在文档根目录中)内部/静默地重写到/randomizer.php PHP脚本(也在文档根中-假设.htaccess 文件位于RewriteBase 指令指向)。

我有个奇怪的要求也许

这一点都不奇怪。事实上,像这样使用URL重写可能比直接链接到PHP脚本更好。尽管调用URLrandom-image.jpg 或者类似的东西也许是个好主意。

这实际上与我昨天在StackOverflow上回答的一个问题几乎相同:https://stackoverflow.com/questions/63340667/htaccess-redirect-one-file-to-another-including-query-string

SO网友:w.jelsma

我创建了一个名为randomImage()的函数,它只是从数组中获取一个随机图像,该函数通过以下函数调用:

function imageRedirect(){
// Get the page name from the URL
$page = $_SERVER["REQUEST_URI"];

// Make sure debug mode is disabled since the deprecation errors will ruin the photo content
if (WP_DEBUG) throw new Exception(\'Due to depreciation errors this photo can only be rendered with debug mode disabled!\');

// If we\'re on the random image page
if ($page == RANDOM_IMAGE_URL) {

    // Fetch a random image and return the data
    $image = randomImage();

    header("Content-Type: image/jpeg");
    header("Content-Length: " . filesize($image));
    readfile($image);

    exit;
}
}

相关推荐