2017-04-12 86 views
1

我htaccess的是這樣的:htaccess的重寫

Options -MultiViews 

RewriteEngine On 
RewriteBase/
Options -Indexes 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

我有這樣的老網址:domain.com/site.html ,我願做一個永久重定向到:domain.com/site(沒有的.html)

但究竟發生了什麼:domain.com/site?url=site.html 我不知道爲什麼。也許有人可以幫助我。

+0

此配置不包含任何與'site.html' – Deadooshka

回答

0

您會收到您觀察者的結果,因爲這正是您實施的結果。

有,與其一試:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^/?(.+)\.html$ /$1 [R=301] 

這條規則集將在您的HTTP服務器(虛擬)主機配置或動態配置文件(.htaccess風格文件)同樣的工作。

還有一個常規提示:你應該總是喜歡把這樣的規則放在HTTP服務器主機配置中,而不是使用動態配置文件(「.htaccess」)。這些文件出了名的錯誤,很難調試,他們真的放慢了服務器。它們僅作爲最後一種選擇,用於您無法控制主機配置的情況(閱讀:真正便宜的託管服務提供商),或者您擁有依賴編寫自己的重寫規則的應用程序(這是一個明顯的安全噩夢)。

+0

謝謝你的幫助!不幸的是,如果我嘗試你的代碼,我會得到一個404(除了首頁,根目錄以外的每一頁)。 – user3924331

+0

好吧,顯然如果你重定向到'/ site',你的服務需要能夠解決這個問題並對它做出響應。你有什麼手段來做到這一點? – arkascha

+0

嗯,不知道該怎麼辦。但與原始代碼服務器響應,並顯示例如/網站等 – user3924331