2012-09-29 129 views
1

我不是mod改写的最佳模式,所以如果有人能帮助我,那就太好了。使用htaccess隐藏文件扩展名

我正在使用降价处理器脚本,它使用重写来获取以降价文件类型结尾的任何文件。但是,我希望此脚本能够抓取文件夹中的任何文件,而不是以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

重写模块和它的.htaccess文件实际上工作在每个文件夹的基础上。通常,在站点/服务器的Web根目录中将有一个主文件.htaccess。但是,您可以在整个站点的文件夹结构中添加众多的.htaccess文件,为每个文件夹指定特定的规则。

所有你必须做的是另一种.htaccess文件添加到您的降价文件夹,并使其能够解析URL的无文件扩展名,将其转发到一个脚本,将能够探测到被请求的是什么原始文件 -

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

基本上这里发生的是,在这个文件夹内请求的任何文件将通过您的render.php文件传递。

现在在您的render.php文件中,您将有一个$_GET参数file包含原始URL。对于http://example.com/markdown/foo一个网址,你render.php将有foofile参数 -

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

如果设置在render.php正确的头就能够打印出文件的任何格式,隐藏它的扩展名的“假“URL。

+1

非常感谢您的帮助!这会给我一个很好的起点! –

+0

不客气!最重要的是,你可以拥有每个文件夹的htaccess文件。 – Lix

+1

是的,这很有帮助。我的系统现在按预期工作!只需要现在重写文件夹并从url中删除它。 –

相关问题