我有 .htaccess :
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png)$
RewriteRule ^(.*)$ index.php?v=$1 [NC,L,QSA]
ErrorDocument 404 /src/html/404.php
在我的 index.php 中,我得到了' v '变量并检查数据库中是否存在该页面。
如果页面存在,我将包含页面内容,如果页面不存在,我将包含404错误页面。
除非我尝试访问现有目录,例如:
,否则一切都正常运行example.com/src
它会自动重定向到:
example.com/src/?v=src
并显示错误页面
但是当我尝试:
example.com/src / (使用' / '在网址末尾)
它将保留URL并显示错误页面! (这就是我需要的)
现在我想知道如果网址没有' / ' ?
答案 0 :(得分:0)
添加2行以检查网址是不是真正存在的文件或文件夹
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png)$
RewriteRule ^(.*)$ index.php?v=$1 [NC,L,QSA]
答案 1 :(得分:0)
我找到了一个棘手的解决方案,但我不知道这是不是一个好主意!
我编辑了我的 .htaccess 文件并添加了:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]
这样可以正常工作,除非它会添加" / "到网址的末尾(这不是问题,但更改我不喜欢的网址)
<强>更新强>
我找到了正确的解决方案:
DirectorySlash Off