强制HTTPS以及删除文件扩展名

时间:2013-06-01 05:50:15

标签: php .htaccess mod-rewrite

我一直在尝试强制HTTPS以及删除php扩展,但是当我将它们混合时,我总是在浏览器上获得重定向循环。

我在Stackoverflow周围进行了搜索,但只有一个是特定的而不是两者。

这就是我目前所拥有的:

RewriteEngine on 
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

RewriteCond %{HTTPS} off
RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}$1 [R=301,L]

2 个答案:

答案 0 :(得分:3)

这是我用来解决这个问题的方法;

Options +FollowSymLinks -MultiViews
Options +Indexes
AcceptPathInfo Off
RewriteEngine on
RewriteBase   /

ErrorDocument 404 http://mysite.co.uk/404page/404.html

#Force from http to https
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} !^mysite.co.uk$
RewriteRule ^(.*)$ https://mysite.co.uk/$1 [R=301]

#take off index.html
 RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.html$ [NC]
RewriteRule . http://www.%{HTTP_HOST}%1 [R=301,NE,L]

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]    

## hide .html extension
# To externally redirect /dir/foo.html to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.html
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [L]   

答案 1 :(得分:1)

@Switchfire - 正在进行重定向!非常感谢。但如果你在url中有#(#),那就给出一些错误。

所以我做了一些改变。并且也成功 1.阻止直接访问目录 2.将www或非www请求重定向到https://www

myArray.push({
   fullName : fullName,
   birthYear : birthYear
});
相关问题