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]
1条答案
按热度按时间neskvpey1#
因为这个规则/regex只抓取到第二个斜杠的URL部分,并丢弃其余部分(可能导致重复内容问题,并打开您的网站滥用)。例如,当您请求
/news/besthotelinthearea2019/dsadsadsadsa
时,它会将请求重写为news.php?url=besthotelinthearea2019
(/dsadsadsadsa
部分被有效忽略)。在正则表达式中添加一个字符串结尾锚(
$
),使其只匹配/news/besthotelinthearea2019
,而不匹配/news/besthotelinthearea2019/<anything>
。例如:
同样的“问题”也适用于你的最后一条规则(即“sectioncategory”)。
注意:这里不需要
NC
标志(除非news
可以请求大小写混合-不建议),并且可以简化字符类。例如,上面的等价于:速记字符类
\w
与[0-9a-zA-Z_]
相同。如果有人输入
www.example.com/news/dsadsa
,也会显示错误页面在这种情况下,“错误页面”必须由脚本(
news.php
)生成,而不是由Apache生成。(而本答案第一部分中的URL现在将触发Apache
ErrorDocument
,因为它与您的规则不匹配。)