当目录不存在时如何运行php脚本?

时间:2015-07-02 22:58:24

标签: php

我知道这可能已经得到了回答,但我真的不知道如何说出来。

基本上,我正在尝试存储图像,但在检索图像时,我希望网址看起来像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” 我在image目录中有一个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,网址仍然保持不变图像。

1 个答案:

答案 0 :(得分:2)

如我的评论中所述,如果您使用的是apache服务器,使用.htaccess文件可能是重写规则的最佳方式,因为如果它不是正确的地址,我认为默认情况下您的服务器会只做error 404。如果你有一个重写,你可以最少强制每个命中去一个文件进行路由使用PHP。以下是此重写的基本示例。您将此文件放在任何您希望它具有影响的文件夹中。它也会影响所有子文件夹:

<强>的.htaccess

RewriteEngine On
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [NC,QSA,L]

以下是一些相关的StackOverflow参考:

.htaccess rewrite to redirect root URL to subdirectory

How to enable mod_rewrite for Apache 2.2

How to remove index.php from URLs?