如何禁用追加斜杠追加?

时间:2016-01-05 15:54:49

标签: php apache

我在PHP,MVC上编写自己的网站,它使用路由(一切都重定向到/index.php)。

网站的结构是这样的:

/module/
/module/catalog/
/module/catalog/entry.html

此外,我的网站根目录中还有名为/ module / catalog /的真实文件夹。

我需要MVC才能在用户请求带有斜杠的URL时加载内容,否则MVC必须抛出404错误。 但是当我按照/ module / catalog这样的url,并且有一个带有这样地址的真实目录时,Apache会自动附加尾部斜杠,并且MVC继续工作,不会出现404错误(应该是这样) 。 如果没有这样的目录,URL保持没有斜线,我看到404(这没关系)。

如何在第一种情况下禁用附加斜杠?我希望使用PHP脚本以不同的斜杠来处理URL。

根目录.htaccess中的DirectorySlash关闭绝对没有效果。这是我的/.htaccess:

Options -Indexes +FollowSymLinks
DirectoryIndex index.php

AddDefaultCharset utf-8

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301]

DirectorySlash Off

ErrorDocument 404 /errors/404.html
ErrorDocument 403 /errors/403.html

RewriteCond %{REQUEST_URI} !\/errors\/
# TODO: Remove PHP gere - it's only for testing!
RewriteCond %{REQUEST_URI} !\.(js|gif|jpg|png|css|txt|ico|php)$
# QSA says to overwrite GET values defined in target address string.
RewriteRule .* index.php [L]

1 个答案:

答案 0 :(得分:1)

首先,我首先要说的是,首先要有反映您的URL重写的文件夹可能不是一个好主意。

其他MVC将索引文件放在其类目录中,这些目录只是看起来像404页面的HTML页面。这样,如果用户使用斜杠请求它,则会将它们重定向到显示404文本的index.html页面。

查看CodeIgniter的Core文件夹中的“index.html”文件:

https://github.com/bcit-ci/CodeIgniter/tree/develop/system/core