重写规则查找目录并将路径重写为'directory /?directory'

时间:2013-01-30 17:58:48

标签: regex url mod-rewrite url-rewriting directory

我一直在使用这个Apache重写规则已经有一段时间了,它通常会给我很好的结果:

RewriteRule ^([^\.]+)/?$ index.php?$1 [L]

当用户访问www.mysite.com/about-us时,服务器会显示www.mysite.com/index.php?about-us中的内容。内容存储在数据库中,我使用查询字符串('about-us')搜索每个页面的内容。直到最近这个工作还不错。

我正在构建的一个新站点有一个目录(我们称之为'文件夹'),它与查询字符串的名称相同 - 也就是说,而不是在{{{}中查找索引文件。 1}}目录,newsite.com/folder应该通过www.newsite.com/folder路由并使用'folder'作为搜索参数。相反,我得到了这个:

index.php

其中我的代码将查询字符串解释为'folder /'。所以第一个问题是URL看起来很奇怪;第二个问题是我的页面存储没有任何尾部斜杠。

当然,我可以调整我的代码以在收到查询字符串后删除任何斜杠,但这可能会使创建模拟文件夹结构的URL更具挑战性,例如www.newsite.com/folder/?folder 。它仍然不会摆脱我已经拥有的那个时髦的URL。

我怀疑有一个简单的解决方案可以使我的网址漂亮,并使服务器不会在我的目录中查找文件(除非用户明确要求提供html或php文件)。感谢您的投入。

1 个答案:

答案 0 :(得分:0)

将“DirectorySlash Off”添加到“.htaccess”文件的开头

我遇到了同样的问题,并发现了一个类似的帖子,它简单地引用了DirectorySlash文档(http://httpd.apache.org/docs/2.2/mod/mod_dir.html