1
OK,所以我想這樣做:mod_rewrite的基於HTTP> HTTPS重定向除了一個URL
- WWW - > WWW
HTTP - > HTTPS EXCEPT /[A-F0! -9] {11}/
https://www.domain.com/[a-f0-9] {11}/- >http://www.domain.com/[a-f0-9] {11}/
地圖到控制器:?的index.php(URI) 例如/控制器/動作/ ID - >的index.php /控制器/動作/ ID
總結:所有的URL應該https://www.domain.com/除了/ [A-f0-9] {11} /,其中(*)。應該被強制爲只有http。
我有一套舊規則(見下文),看起來不太乾淨。 我嘗試添加它們來解釋/ [a-f0-9] {11},並且它最終重定向而不是重新映射,因此我以www.domain.com/index.php/thepattern0結束了
如何清理這些規則並使其工作?
<IfModule mod_rewrite.c>
Options +FollowSymLinks -MultiViews -Indexes
RewriteEngine On
RewriteBase/
#redirect to www
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
#redirect to https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
#hide index.php
RedirectMatch 404 .*php\.ini
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^(.*)$ index.php/$1 [L,QSA]
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
難道你的建議([上OM->]第15行固定錯字) 捲曲-v -I HTTP://www.domain。 COM/abc123abc15 [...] HTTP/1.1 301永久移動 <日期:星期二,2016年2月9日8時09分37秒GMT 日期:星期二,2016年2月9日8時09分37秒GMT <服務器:Apache服務器:Apache <位置:https://www.domain.com/abc123abc15 –
尾隨斜線是問題所在。檢查更新的答案,使其成爲可選項。 – anubhava
酷,更新的作品(減去逃脫。在第6行) –