【问题标题】:htaccess Remove trailing slash, force HTTPS, hide php extensionhtaccess 删除斜杠,强制 HTTPS,隐藏 php 扩展
【发布时间】:2017-05-13 23:35:14
【问题描述】:

我有一个 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

我发现了许多类似的问题,但是当我尝试根据自己的需要将它们拼凑在一起时,我又会遇到太多重定向!

【问题讨论】:

  • 永久重定向到 https 最好在 vhost 文件中完成,例如:Redirect permanent / https://www.example.com ... 在 apache 2.4 debian 和 osx 中测试

标签: php .htaccess ssl https


【解决方案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 来生成无限的重写循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 2011-07-28
    • 2013-09-14
    相关资源
    最近更新 更多