【发布时间】:2016-04-09 12:34:03
【问题描述】:
我正在用 PHP、MVC 编写自己的网站,它使用路由(所有内容都重定向到 /index.php)。
网站的结构是这样的:
/module/
/module/catalog/
/module/catalog/entry.html
我的站点根目录中还有名为 /module/catalog/ 的真实文件夹。
只有当用户请求带有斜杠的 URL 时,我才需要 MVC 加载内容,否则 MVC 必须抛出 404 错误。 但是当我关注 /module/catalog 之类的 url 并且有一个具有这样地址的真实目录时,Apache 会自动附加斜杠,并且 MVC 继续工作,而不是给出 404 错误(应该是) . 如果没有这样的目录,则 URL 保持不带斜线并且我看到 404(这没关系)。
如何在第一种情况下禁用附加斜杠?我想使用 PHP 脚本以不同的方式处理带有和不带有斜杠的 URL。
根 .htaccess 中的DirectorySlash Off 完全没有效果。这是我的 /.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]
【问题讨论】:
-
不要自己做,检查 laravel 或 symfony