繁体   English   中英

带有斜线错误的htaccess重写规则扩展

[英]htaccess rewrite rule extension with slash error

已经使用htaccess删除了我的url扩展名(.php),甚至使扩展名为.php的url重定向到404错误,就像我的URL是www.example.com/page/一样,有人在末尾添加了.php扩展名,例如www .example.com / page.php,该页面会按原样重定向,但问题是当我打开带有扩展名和斜杠的URL:“ www.example.com/page.php/”时。 没有重定向,什么都没有。 我希望将其重定向到404。

请查看我的htaccess内容,并在需要时建议我进行改进。 任何帮助将不胜感激。

非www到www

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^example.com [nocase]
RewriteRule ^(.*)         http://www.example.com/$1 [last,redirect=301]

索引页面到唯一域

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index/
RewriteRule ^index/$ http://www.example.com/ [R=301,L]

删除扩展名并添加斜线

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

删除多个斜杠

RewriteBase /
RewriteCond %{HTTP_HOST} !=""
RewriteCond %{THE_REQUEST} ^[A-Z]+\s//+(.*)\sHTTP/[0-9.]+$ [OR]
RewriteCond %{THE_REQUEST} ^[A-Z]+\s(.*/)/+\sHTTP/[0-9.]+$
RewriteRule .* http://%{HTTP_HOST}/%1 [R=404,L]

您需要在www规则下方添加一条新规则,以删除.php扩展名:

RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.php[\s?/] [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM