我一直在使用这个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文件)。感谢您的投入。
答案 0 :(得分:0)
将“DirectorySlash Off”添加到“.htaccess”文件的开头
我遇到了同样的问题,并发现了一个类似的帖子,它简单地引用了DirectorySlash文档(http://httpd.apache.org/docs/2.2/mod/mod_dir.html)