htaccess删除尾部斜杠,强制HTTPS,隐藏php扩展

时间:2016-12-29 16:02:15

标签: php .htaccess ssl https

我有SSL证书,我需要在我的网站上强制使用https。 另外,我需要删除尾部斜杠,并从文件中隐藏.php扩展名。

这是我到目前为止所做的,但它导致了太多的重定向:

RewriteEngine On

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ https://hellorufus.com/$1 [R,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ https://hellorufus.com/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^\.]+)$ $1.php [NC,L]

# 404 Error Template
ErrorDocument 404 /404.html

我发现了一些类似的问题,但是当我尝试将它们拼凑起来以满足自己的需求时,我最终会再次出现太多的重定向!

1 个答案:

答案 0 :(得分:1)

这是一个看似合理的修正版本:

RewriteEngine On

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ /$1 [R=302,L,QSA]

# Redirect external .php requests to extensionless url
RewriteRule ^(.+)\.php$ /$1 [R=301,L,QSA]

# Resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [L,QSA]

# 404 Error Template
ErrorDocument 404 /404.html

不确定这是否已解决您的问题。要确定我们需要一些特定的请求URL来生成无限的重写循环。