2017-03-04 44 views
1

我正在为我的一个网站开发.htaccess开发。到目前为止,这是我的代码:URL重写后,使用文件扩展名阻止访问页面

RewriteEngine On 
# omit www. 
RewriteCond %{HTTP_HOST} ^www\.website\.com [NC] 
RewriteRule ^(.*)$ http://website.com/$1 [L,R=301] 

# now omit.php extension from page names 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

这一切工作正常,该网站提供了SANS www.,所有的.php扩展删除。我还从标记中的页面链接中删除了.php扩展,并且再次按照我的意愿提供页面,例如website.com/news.php现在显示为website.com/news

很酷。

我旁边意识到的是,该网页仍然能够通过在页面名称与文件扩展名输入访问,所以website.com/news.php拉起页在地址栏中的文件扩展名是website.com/news.php

是有没有办法来防止这种情况?因此,如果website.com/news.php被输入到地址栏中,浏览器将提供website.com/news

回答

1

如果website.com/news.php输入到地址栏,浏览器将成为了website.com/news

当然,你可以添加一个重定向规则删除.php

RewriteEngine On 

# omit www. 
RewriteCond %{HTTP_HOST} ^www\.website\.com [NC] 
RewriteRule ^(.*)$ http://website.com/$1 [L,R=301,NE] 

# To externally redirect /dir/file.php to /dir/file 
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC] 
RewriteRule^/%1 [R=302,NE,L] 

# To internally redirect /dir/file to /dir/file.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 
+0

@wordman:这篇锻炼? – anubhava

+0

我直到今天才看到你的帖子,我现在就试试看,并告诉你它是如何工作的,谢谢! – wordman

+1

完美的作品,非常感谢你的帮助!现在我必须研究代码以充分理解它的工作原理。非常感谢! – wordman