删除结尾的斜线从目录中的htaccess
以下是我的目录结构删除结尾的斜线从目录中的htaccess
Root/
index.php
contact.php
projects.php
/index.php
/project1.php
/project2.php
我在的地方重写删除所有文件名中的PHP扩展。它运行完美,我可以从www.website.com/projects/project2
访问www.website.com/projects/project2.php
我也希望能够访问www.website.com/projects/index.php
作为www.website.com/projects
我已成功地写一个重写URL来www.website.com/projects/
当我键入www.website.com/projects
但是,我无法摆脱最后的斜线。
请注意,我不太了解这一点。它大部分来自我在互联网上找到的东西。我已经环顾了很多人,但到现在为止还没有任何工作要做。
下面是代码:
Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^projects$ /projects/index.php [L,E=LOOP:1]
这是由mod_dir and the DirectorySlash directive引起的。它会自动301重定向对缺少斜线的目录的请求。这修复了信息泄露安全问题(在上述链接中描述),即使存在索引文件(例如index.php
),也会列出目录内容。所以如果你关闭这个功能,要非常小心你的目录。如果你关闭了目录索引,那么这不是一个问题。
您可以打开目录的斜杠使用:
DirectorySlash Off
您可以使用选项关闭目录索引:
Options -Indexes
然后,你需要有自己的项目之前排除你php的扩展规则:
Options +FollowSymLinks -MultiViews -Indexes
DirectorySlash Off
RewriteEngine on
RewriteRule ^projects$ /projects/index.php [L,E=LOOP:1]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
非常感谢您解释它。它的工作原理就是我想要的! – ghosh 2013-05-06 22:22:07
你想要什么用这个:“RewriteRule ^([^ \。] +)$ $ 1.php [NC,L]'? – 2013-05-06 22:03:38