URL重写后,阻止使用文件扩展名访问页面

时间:2017-03-04 22:35:51

标签: .htaccess

我正在为我的一个网站开发.htaccess开发。到目前为止,这是我的代码:

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]

一切正常,网站已提供www.,所有.php扩展名都已删除。我还从标记中的页面链接中删除了.php个扩展名,然后再次按照我的意愿提供这些页面,例如,website.com/news.php现在显示为website.com/news

冷却。

我接下来意识到,通过输入带有文件扩展名的页面名称仍然可以访问页面,因此website.com/news.php将地址栏中带有文件扩展名的页面拉为{{1 }}

有没有办法防止这种情况发生?如果在地址栏中输入website.com/news.php,则浏览器会提供website.com/news.php

1 个答案:

答案 0 :(得分: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]