使用htaccess隐藏文件扩展名

时间:2012-09-29 12:20:16

标签: php .htaccess mod-rewrite markdown

我不是最好用mod重写,所以如果有人可以帮助我,这将是伟大的。

我正在使用降价处理器脚本,它正在使用重写来获取以markdown文件类型结尾的所有文件。但是,我希望这个脚本能够获取文件夹中的任何文件,而不是任何以markdown文件类型结尾的文件。

这是htaccess

# display Markdown as HTML by default
RewriteEngine on

RewriteRule .+\.(markdown|mdown|md|mkd)$ /static/includes/markdown/render.php
RewriteRule .+\.(markdown|mdown|md|mkd)\-text$ /static/includes/markdown/render.php [L]

有没有办法获取名为(比方说)“文件夹”的文件夹中的所有文件,并在最后删除文件类型?

所以也许有像

这样的网址
website.com/home 

实际上是

website.com/home.md

并使用降价脚本处理?

希望这是有道理的。

1 个答案:

答案 0 :(得分:1)

重写模块及其.htaccess文件实际上基于每个文件夹。通常,站点/服务器的Web根目录中会有一个主.htaccess文件。但是,您可以在整个站点的文件夹结构中添加大量.htaccess个文件,从而为每个文件夹指定特定的规则。

您需要做的就是将另一个.htaccess文件添加到您的markdown文件夹并启用它来解析没有文件扩展名的URL,将其转发到一个脚本,该脚本将能够检测到请求的原始文件 - < / p>

RewriteEngine on
RewriteRule ^(.*)$ /static/includes/markdown/render.php?file=$1 [L,QSA]

基本上这里发生的事情是,此文件夹中请求的任何文件都将通过您的render.php文件传递。

现在,在render.php文件中,您的$_GET参数file包含原始网址。对于http://example.com/markdown/foo的网址,您的render.phpfoo参数中会file -

 /static/includes/markdown/render.php?file=foo

如果您在render.php中设置了正确的标题,则可以打印出任何格式的文件,将其扩展名隐藏在“虚假”网址中。