mod|u rewrite | remove.php并强制使用https

mod|u rewrite | remove.php并强制使用https,php,apache,.htaccess,redirect,mod-rewrite,Php,Apache,.htaccess,Redirect,Mod Rewrite,我用html/js/php创建了一个小型静态网站 现在我只想使用https://non.www.domain(如下所示:)。应重定向所有其他组合。目前,该网站可以通过各种可能的组合访问 为了使URL更具可读性,我还想删除.php扩展名 我只能让这些东西中的一个起作用。一旦我尝试合并它们,就会得到太多的重定向。目前只有删除.php扩展名是在线的 我使用的是一个众所周知的片段: # To externally redirect /dir/foo.php to /dir/foo RewriteCond

我用html/js/php创建了一个小型静态网站

现在我只想使用https://non.www.domain(如下所示:)。应重定向所有其他组合。目前,该网站可以通过各种可能的组合访问

为了使URL更具可读性,我还想删除.php扩展名

我只能让这些东西中的一个起作用。一旦我尝试合并它们,就会得到太多的重定向。目前只有删除.php扩展名是在线的

我使用的是一个众所周知的片段:

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

# add a trailing slash    
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
要将http重定向到https和非www,我通常使用:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
有没有办法把它们结合起来? 是否有最佳实践

我已经搜索了很多,只找到了包含许多重写规则的巨大.htaccess文件

非常感谢你

这样做:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]

RewriteCond %{ENV:HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

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

# add a trailing slash    
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L]

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