第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

.htaccess 的多個(gè)重寫規(guī)則,重定向到 www,同時(shí)包含 index.php

.htaccess 的多個(gè)重寫規(guī)則,重定向到 www,同時(shí)包含 index.php

PHP
慕妹3242003 2023-09-22 16:33:31
具體來說,我想將所有非 www 頁面重定向到 www,同時(shí)還運(yùn)行位于我的根目錄中的 index.php 文件。為了解決這兩個(gè)問題,我正在使用.htaccess.我已經(jīng)將我的站點(diǎn)設(shè)置為運(yùn)行 PHP 文件以在每個(gè)目錄中運(yùn)行。但是當(dāng)我添加從非 www 到 www 的重定向時(shí),它就中斷了。問題似乎是多個(gè)重寫規(guī)則相互沖突。其中一個(gè)運(yùn)行而另一個(gè)不運(yùn)行,或者站點(diǎn)僅響應(yīng) 500 錯(cuò)誤。我的問題是,是否應(yīng)該將多個(gè)重寫規(guī)則“組合”為一個(gè)?或者我只是錯(cuò)誤地使用了這些多個(gè)規(guī)則?(或者這只是我搞砸的一些奇怪的語法?我已經(jīng)研究這個(gè)有一段時(shí)間了哈哈)很感謝任何形式的幫助。<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php  [L,QSA]# Redirect to www.RewriteCond %{HTTP_HOST} ^example.com$RewriteRule (.*) https://www.example.com/$1 [R=301,L] </IfModule>
查看完整描述

2 回答

?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

我發(fā)現(xiàn)這個(gè)有效:


RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L] #if not already index.php


RewriteCond %{REQUEST_FILENAME} !-f #only if NOT a FILE (directory / non-existent file)

RewriteRule . /index.php [L] #redirect to index.php


RewriteCond %{HTTP_HOST} ^example.com$

RewriteRule ^(.*) https://www.example.com/%{REQUEST_FILENAME} [R=301,L] #redirect to https://www

</IfModule>

這不可能像所寫的那樣“工作”,因?yàn)榇嬖谠S多錯(cuò)誤:

  • 您缺少打開<IfModule mod_rewrite.c>指令。然而,無論如何,這個(gè)<IfModule>包裝都不是必需的,應(yīng)該被刪除。

  • Apache 不支持行結(jié)束注釋。具體來說,以下行將由于“錯(cuò)誤的標(biāo)志分隔符”而導(dǎo)致 500 錯(cuò)誤:

     RewriteCond %{REQUEST_FILENAME} !-f #only if NOT a FILE (directory / non-existent file)

    更新:如果您在此處沒有看到 500 錯(cuò)誤響應(yīng),則您可能使用的是 LiteSpeed 服務(wù)器;而不是 Apache?在 LiteSpeed 上,此行尾注釋似乎按預(yù)期工作?。?/p>

  • www除了對(duì)目錄(包括根目錄)或真實(shí)文件(除了index.php)的請(qǐng)求之外,重定向到的外部重定向(最后)永遠(yuǎn)不會(huì)被處理。在現(xiàn)有重寫之前,需要先進(jìn)行此重定向。然而,請(qǐng)看下一點(diǎn)......

  • 您在目標(biāo) URL 中錯(cuò)誤地使用了REQUEST_FILENAME(絕對(duì)文件系統(tǒng)路徑) - 這將導(dǎo)致格式錯(cuò)誤的重定向。您可以使用REQUEST_URI服務(wù)器變量(完整的 URL 路徑),但請(qǐng)注意,您還存在雙斜杠問題。因此,它需要像下面這樣重寫:

     RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]

小要點(diǎn):

  • RewriteBase這里沒有使用它,可以安全地刪除。(除非你有其他指令使用這個(gè)?)

概括

綜合以上幾點(diǎn)我們有:

RewriteEngine On


# Redirect to https://www

RewriteCond %{HTTP_HOST} ^example\.com$

RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


# Stop here if already index.php

RewriteRule ^index\.php$ - [L]


# Only if NOT a FILE (non-existent file)

RewriteCond %{REQUEST_FILENAME} !-f

# Rewrite to index.php (in the document root)

RewriteRule . /index.php [L]

請(qǐng)注意,這仍然會(huì)將目錄重寫為,與您的評(píng)論/index.php所述相反。


首先使用 302(臨時(shí))重定向進(jìn)行測(cè)試以避免潛在的緩存問題。


在測(cè)試之前您需要清除瀏覽器緩存。


查看完整回答
反對(duì) 回復(fù) 2023-09-22
?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊

經(jīng)過大量的修改/研究,我發(fā)現(xiàn)這個(gè)有效:


RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L] #if not already index.php


RewriteCond %{REQUEST_FILENAME} !-f #only if NOT a FILE (directory / non-existent file)

RewriteRule . /index.php [L] #redirect to index.php


RewriteCond %{HTTP_HOST} ^example.com$

RewriteRule ^(.*) https://www.example.com/%{REQUEST_FILENAME} [R=301,L] #redirect to https://www

</IfModule>


<IfModule mod_headers.c>

    Header set Access-Control-Allow-Origin "*"

</IfModule>


查看完整回答
反對(duì) 回復(fù) 2023-09-22
  • 2 回答
  • 0 關(guān)注
  • 128 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)