我尝试过搜索,但找不到任何内容。我希望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>`