.htaccess 如何显示错误404如果有人搞乱了URL目录

xkftehaa  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(116)

htaccess和数据库连接非常成功
如果有人键入www.example.com/dsadsada,则会显示错误页面
如果有人输入www.example.com/news/dsadsa,也会显示错误页面
但是当有人输入www.example.com/news/besthotelinthearea2019/dsadsadsadsa的时候,它没有显示错误页面,它仍然显示该地区最好的酒店2019年的新闻,但是没有CSS,怎么能重定向到404错误呢?非常感谢
这是我的.htaccess上的代码

RewriteEngine on

    ErrorDocument 404 /error.php
    ErrorDocument 300 /error.php

    RewriteRule ^index.html$ / [R=301,L]
    RewriteRule ^(.*)/index.html$ /$1/ [R=301,L]

    RewriteCond %{THE_REQUEST} ^.*/index\.php 
    RewriteRule ^(.*)index.php$ /$1 [R=301,L] 

    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^example\.com [NC]
    RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

    RewriteRule ^news/([0-9a-zA-Z_-]+) news.php?url=$1 [NC,L]

    RewriteRule ^sectioncategory/([0-9a-zA-Z_-]+) sectioncategory.php?category=$1 [NC,L]
neskvpey

neskvpey1#

RewriteRule ^news/([0-9a-zA-Z_-]+) news.php?url=$1 [NC,L]

因为这个规则/regex只抓取到第二个斜杠的URL部分,并丢弃其余部分(可能导致重复内容问题,并打开您的网站滥用)。例如,当您请求/news/besthotelinthearea2019/dsadsadsadsa时,它会将请求重写为news.php?url=besthotelinthearea2019/dsadsadsadsa部分被有效忽略)。
在正则表达式中添加一个字符串结尾锚($),使其只匹配/news/besthotelinthearea2019,而不匹配/news/besthotelinthearea2019/<anything>
例如:

RewriteRule ^news/([0-9a-zA-Z_-]+)$ news.php?url=$1 [NC,L]

同样的“问题”也适用于你的最后一条规则(即“sectioncategory”)。
注意:这里不需要NC标志(除非news可以请求大小写混合-不建议),并且可以简化字符类。例如,上面的等价于:

RewriteRule ^news/([\w-]+)$ news.php?url=$1 [L]

速记字符类\w[0-9a-zA-Z_]相同。

  • 旁白 *

如果有人输入www.example.com/news/dsadsa,也会显示错误页面
在这种情况下,“错误页面”必须由脚本(news.php)生成,而不是由Apache生成。
(而本答案第一部分中的URL现在将触发Apache ErrorDocument,因为它与您的规则不匹配。)

相关问题