htaccess重写规则扩展名,带斜杠错误

时间:2014-08-28 14:12:37

标签: regex apache .htaccess mod-rewrite redirect

已经使用htaccess移除了我的网址扩展名(.php),甚至将扩展名为.php的网址重定向为404错误,就像我的网址是www.example.com/page/一样一个在www.example.com/page.php末尾添加.php扩展名,页面重定向就应该如此 但问题是当我打开网址时:“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]

1 个答案:

答案 0 :(得分:0)

您需要在www规则下方添加新规则才能删除.php个扩展程序:

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