2013-11-03 165 views
2

我附加了我目前的htaccess文件下面,它目前使我所有的網址尾部斜槓在最後,如果它是和只在/ prepaid /它將是https。htaccess只允許某個點後的數字與https

我正在特林擴展這一功能,在這裏我也可以接受來自/充值/填充/ 一個10位數的電話號碼請求,並將它爲https以及

我開始通過在加入這一行底部,但我將如何擴展https部分以允許從此路徑以及?

RewriteRule ^prepaid/refill/([0-9]+)/?$  index.php?p=prepaid&phone=$1  [L] 

當前代碼

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ $1/ [L,R=301] 

RewriteCond %{HTTPS} off 
RewriteCond %{QUERY_STRING} !.      [NC] 
RewriteRule ^prepaid/?$  https://www.domain.com/prepaid/ [R=301,L] 

RewriteCond %{HTTPS} on 
RewriteRule ^prepaid/(.+) http://www.domain.com/prepaid/$1 [R=301,L,QSA] 


RewriteRule ^prepaid/?$     index.php?p=prepaid     [L] 
RewriteRule ^prepaid/h2o-wireless/?$  index.php?p=prepaid&s=h2o   [L] 
RewriteRule ^prepaid/net10-wireless/?$  index.php?p=prepaid&s=net10   [L] 
RewriteRule ^prepaid/page-plus-cellular/?$ index.php?p=prepaid&s=pageplus  [L] 
RewriteRule ^prepaid/red-pocket-mobile/?$ index.php?p=prepaid&s=redpocket  [L] 
RewriteRule ^prepaid/simple-mobile/?$  index.php?p=prepaid&s=simplemobile [L] 
+0

所以你想強制HTTPS在'prepaid/refill/'上,除了強迫HTTPS在'prepaid /'上強制非https對其他任何東西? –

+0

是的,這是正確的 – seesoe

回答

1

讓你的全部.htaccess像這樣:

RewriteEngine On 
RewriteBase/

# force www 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# force trailing slash 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301] 

# force HTTPS for /prepaid/ OR /prepaid/refill/([0-9]+)/ 
RewriteCond %{HTTPS} off 
RewriteCond %{QUERY_STRING} !. 
RewriteRule ^prepaid(/refill/[0-9]+)?/?$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC] 

# force HTTP for everything else 
RewriteCond %{HTTPS} on 
RewriteRule ^prepaid/(?!refill/[0-9]+).+$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC] 

# internal rewrites 
RewriteRule ^prepaid/?$      index.php?p=prepaid     [L,QSA,NC] 
RewriteRule ^prepaid/h2o-wireless/?$  index.php?p=prepaid&s=h2o   [L,QSA,NC] 
RewriteRule ^prepaid/net10-wireless/?$  index.php?p=prepaid&s=net10   [L,QSA,NC] 
RewriteRule ^prepaid/page-plus-cellular/?$ index.php?p=prepaid&s=pageplus  [L,QSA,NC] 
RewriteRule ^prepaid/red-pocket-mobile/?$ index.php?p=prepaid&s=redpocket  [L,QSA,NC] 
RewriteRule ^prepaid/simple-mobile/?$  index.php?p=prepaid&s=simplemobile [L,QSA,NC] 
RewriteRule ^prepaid/refill/([0-9]+)/?$  index.php?p=prepaid&phone=$1  [L,QSA,NC] 
+0

工作幾乎完美無缺,唯一的事情是當請求是在一個HTTP網址,有一個額外的斜槓加入.com後,所以即時通訊http://domain.com//prepaid/簡單移動/ – seesoe

+0

嗯好吧,你可以嘗試註釋'強制尾隨斜線'規則只是爲了在新的瀏覽器中進行測試和測試。 – anubhava

+0

它仍在做同樣的事情 – seesoe

0

使用https需要寫一些IKE在此 正則表達式,你一定要謹慎,是: \ d + - 其唯一的數字小字符

RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule ^prepaid/refill/(\d+)/?$  index.php?p=prepaid&phone=$1  [L] 
+1

請詳細說明 – seesoe