htaccess:保护手动重写URL地址


htaccess: Protecting manual re-write of URL address

是否可以保护单个网站URL多个不被手动更改?

示例:

www.example.com/here-is-example-url/1234/page/-这是正确的URL

www.example.com/here-is-example-错误的URL(手动更改)或

www.example.com/here-is--错误的URL(手动更改)或

www.example.com/here-is-example-2-错误的URL(手动更改)

目前,我确实使用lastRewriteRule将这些更改后的地址重定向到主页,但我看到了一些解决方案,可以检测手动更改URL并阻止此类访问者访问。

RewriteRuleRewriteCond可以防止这种情况发生?

这是我目前所拥有的:

#redirect to canonical url if no ending slash
RewriteRule ^([A-Za-z0-9-]+)/([0-9]+)/page$ $1/$2/page/ [R,L]
#redirect to canonical url if anything behind slash
RewriteRule ^([A-Za-z0-9-]+)/([0-9]+)/page/(.+)$ $1/$2/page/ [R,L]
#rewrite to PHP file if visiting the canonical url
RewriteRule ^([A-Za-z0-9-]+)/([0-9]+)/page/$ page.php?val1=$1&val2=$2 [L]
#redirect to Homepage url if no other rule match with missing ending slash
RewriteCond %{REQUEST_URI} !(/$|'.) 
RewriteRule (.*) http://www.domain.com/ [R,L]

如果某些RewriteRule无法解决此问题,是否可以将此类行为重定向到500拒绝访问?

您可以使用Forbden标志

RewriteRule here-is-example$ - [F,L]

正如您所提到的,上述规则只适用于第一个示例。

大多数人看不到HTTP状态代码,您可以使用ErrorDocument来显示自定义错误消息。

ErrorDocument 404 /access-denied.html 

https://httpd.apache.org/docs/2.4/custom-error.html

请小心,因为无法知道是否有人因为剪切粘贴错误或故意探查您的网站而使用了错误的URL。

这不是你应该担心的事情