簡體   English   中英

刪除.php擴展名,強制使用非斜杠,強制非www,強制使用.htaccess使用https

[英]Remove .php extension, force non-slash, force non-www, force https with .htaccess

我已經研究了很長時間了,但是我做對了。 當我有一部分工作(例如,強制非PHP)時,另一部分停止工作(例如,強制非斜杠)。

我到底要什么:

  1. 刪除.php擴展名(因此example.com/foo.php在瀏覽器網址欄中成為example.com/foo
  2. 刪除URL末尾的斜杠(因此example.com/foo.php/變為example.com/foo 。但是當它是一個內部帶有index.php的目錄時,它必須進行相應的重定向(我無法獲得此重定向)工作的最后一部分)
  3. 強制使用非www(有效)
  4. 強制https(這有效)

我現在的.htaccess內容如下所示:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/$ /$1 [R=301,NE,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

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

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

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

我遇到以下問題:

  1. example.com/foo.php/重定向到example.com/foo.php而不是example.com/foo

  2. example.com/foo.php/foo顯示example.com/foo.php文件,而example.com/foo/foo顯示404消息(在我看來,后者是正確的)

  3. example.com/admin (這是其中帶有index.php的文件夾)顯示404消息

我感謝您的幫助!

好的,我知道這是一個廣泛的問題。 但是,如果有人搜索過此文件,我幾乎就會domain.com/foo.php/foo它(唯一不起作用的是將domain.com/foo.php/foo重定向到domain.com/foo/foo

這是我現在擁有的.htaccess文件:

RewriteEngine On

Options -Indexes

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^/]+)\.php(\?|\ |$)
RewriteRule ^ /%2 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/$ /$1 [R=301,NE,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM