【发布时间】:2015-09-20 15:42:38
【问题描述】:
我知道这可能以前已经回答过,但我真的不知道如何措辞。
基本上,我正在尝试存储图像,但是在检索它们时,我希望 url 看起来像 http://www.example.com/xdfg485324
我知道 mvc .net 使用路由、控件和其他东西来做到这一点,但是有没有办法用 php 做到这一点?
我在想,也许因为找不到那个 xdfg485324 目录,我会运行一个 php 脚本并检查数据库中是否存在该图像,然后只返回实际的图像数据(我没有存储实际的图像数据库中的数据,虽然我可以)
据我所知,实际上并没有很好的理由这样做,我只是觉得它看起来更专业。
编辑:
感谢 Rasclatt 让我走上正轨并提供了一些 htaccess 代码,我能够完全按照自己的意愿去做,解决方案是这样的:
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^image/(.*)$ /test/image/?image=$1 [NC,QSA,L]
我的实际网址看起来像这样“http://localhost/test/image/235443” 我在图像目录中有一个 index.php,它在这个 url 重写后被调用。
图像/index.php
<?php
if(isset($_GET['image']))
{
$filename = "../uploadedimages/".$_GET['image'].".jpg";
if(file_exists($filename))
{
header('Content-Type: image/jpeg');
$image = imagecreatefromjpeg($filename);
imagejpeg($image);
imagedestroy($image);
}
}
?>
所有上传的文件都以 jpg 格式保存到 /test/uploadedimages 目录中,因此运行此脚本后,它会返回从 uploadimages 目录请求的图像,但 url 仍然保持不变,即使您获取 url 到图片。
【问题讨论】:
-
如果您使用的是 apache 服务器,使用
.htaccess文件可能是使用重写规则的最佳方法,因为如果它不是正确的地址,我认为默认情况下您的服务器只会执行错误404。如果你有一个重写,你至少可以强制每个命中转到一个文件以使用 php 进行路由。 -
你知道这实际上是我的想法,不确定你是否必须在 html 页面上有一个 404 土地,但我想这没有意义,应该看看在我问之前进一步了解。不过谢谢,如果您想将其作为答案,我会将其标记为答案,这是我问题的解决方案
-
我认为那是我第一次试图找出
.htaccess重写时看到的同一篇文章,很奇怪。
标签: php