2014-08-28 59 views
1

已使用htaccess删除了我的网址扩展名(.php),甚至使URL扩展名.php重定向到404错误,就像如果我的网址是www.example.com/page/有些人在www.example.com/page.php这样的末尾添加了.php扩展名,页面重定向,因为它应该是 ,但问题是当我打开url:“www.example.com/page.php/”时扩展名和斜杠打开。没有重定向,没有。我希望重定向到404.htaccess重写规则扩展与斜杠错误

请仔细阅读我的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] 
+0

上面的代码删除扩展,并添加斜线已在加斜线部分的一些错误...代码适用于2 - 中的文件3个子文件夹,然后它返回一个404错误..很好地更正了代码... – Aryan 2014-10-26 12:39:10

回答

0

你只需要下面www规则新规则删除.php扩展:

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

非常感谢你,我只是将R = 302更改为404,并实现了我想要的。再次感谢您的帮助。继续帮助他人。永远爱你。还有一件事我想问你。我应该保留我的代码以删除多个斜杠。我的意思是我没有看到它在使用很多。有没有问题,或者没问题? – Aryan 2014-08-30 03:08:41

+0

不客气。您可以保留多个斜杠删除代码,但是这是很少使用的。 – anubhava 2014-08-30 04:33:17