让apache.php对任何URL做出响应


Get apache/php to give a response to any URL

我尝试过搜索,但找不到任何内容。我希望apache/php能够返回对任何URL的响应,而不必有一个存在的php页面。例如,对于下面这样的URL,我不想为每个URL创建一个页面,我只想有一个php页面来查询下面的数据库。php代码会以某种方式将文件名作为一个参数,这样它就可以对此做出决定。这可能吗?

http://myserver/file20180401.csv http://myserver/file20180402.csv

您可以使用mod_rewrite。只需将其粘贴到.htaccess文件中即可:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?file=$1 [NC]

然后,只需在index.php文件(或您想将其更改为的任何文件)中使用一些简单的PHP代码:

$file = $_GET['file'];
echo $file;

在您的示例http://myserver/file20180401.csv中,变量$file将等于file20180401.csv

编辑:此处重复,因为在评论中表现不佳。这是我最终使用的解决方案,因为apache文档出于性能原因建议将其放在httpd.conf文件中,而不是.htaccess文件:

<Directory "/var/www/html/test_transporter>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*'.csv)$ file.php?file=$1 [NC]
</Directory>`