我正在为我的一个网站开发.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
?
答案 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]