求助一个PHP程序伪静态规则问题?
打开网址1:域名/article/359.html ,正常的内容页。打开网址2:域名//////article/359.html ,还是正常的内容页。
正常来说 应该是 404页面或者自动跳到只有一个 /开头的该页面。
APACHE规则如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+) index.php?rewrite=$1 [L]
</IfModule>
<FilesMatch .(?i:htm|ini)$>
Order allow,deny
Deny from all
</FilesMatch>
NGINX规则如下:
if (!-e $request_filename) {
rewrite ^/(.+) /index.php?rewrite=$1 last;
}
伪静态处理时:
$_GET['rewrite']
得到的内容是:article/359.html
请问如果修改规则?打开网址2,跳转到404错误或者301跳转到网址1
回复
1个回答

test
2024-06-27
Apache:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# 重定向多个斜杠到一个斜杠
RewriteCond %{THE_REQUEST} \s//+
RewriteRule ^ / [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+) index.php?rewrite=$1 [L]
</IfModule>
<FilesMatch .(?i:htm|ini)$>
Order allow,deny
Deny from all
</FilesMatch>
NGINX:
server {
# ... 其他配置
if ($request_uri ~ "//") {
return 404;
}
if (!-e $request_filename) {
rewrite ^/(.+) /index.php?rewrite=$1 last;
}
}
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容