2017-01-12 71 views
2

我想創建一個.htaccess是執行以下操作:的.htaccess重定向與特定的路線HTTPS和HTTP

當我訪問https :// www.test.com/register/abc它加載文件https :// www.test.com/register/index.php?path=abc(但仍保留了網址https :// www.test.com/register/abc上的瀏覽器)

到目前爲止,這是我的.htaccess

Options +FollowSymLinks -MultiViews -Indexes 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?path=$1 [NC,L,QSA] 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

它工作得很好,如果我已經訪問URL的HTTPS。
瀏覽器顯示www.test.com/register/abc

但是,如果我訪問的URL上的HTTP,在瀏覽器的網址顯示爲這種www.test.com/register/index.php?path=abc

從技術上講,它仍然有效,但該網址實在是太醜了。有沒有什麼辦法解決這一問題?

回答

0

這應該做你找什麼:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^register/([a-zA-Z0-9-_]+) /index.php?path=$1 [QSA,NC,L] 

它會在內部改寫:

www.example.com/register/acbwww.example.com/index.php?path=abc

更新:要強制到HTTPS你couls使用類似:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

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

RewriteRule ^register/([a-zA-Z0-9-_]+) /index.php?path=$1 [QSA,NC,L] 
+0

謝謝很好的答案。只是一個簡單的問題,如果我還想將所有http重定向到https,該怎麼辦?上面的答案很好,但不會改變http到https(我不希望任何非http url) – Kenneal

+0

歡迎您。我已經更新了我的答案。如果問題解決了,請標記爲已接受。 – atoms

+0

會做,非常感謝你的原子! – Kenneal