2014-10-02 115 views
1

我從/東西重定向到/某事/與設置在我的.htaccess文件:重定向到路徑以「/」結尾

RewriteCond %{REQUEST_URI} !\. 
RewriteRule ^(.*[^/])$ http://%{HTTP_HOST}/$1/ [L,R=301,QSA] 

我想添加同樣的事情頁面從而結束上123.html

RewriteCond %{REQUEST_URI} [0-9]+\.html$ 
RewriteRule ^(.*[0-9]+\.html[^/])$ http://%{HTTP_HOST}/$1/ [L,R=301,QSA] 

它沒有工作......但!

RewriteCond %{REQUEST_URI} [0-9]+\.html$ 
RewriteRule ^(.*[0-9]+\.htm.*[^/])$ http://%{HTTP_HOST}/$1/ [L,R=301,QSA] 

該變種完美!爲什麼apache不喜歡「l」?誰知道?

Apache的版本:2.4.9

回答

1

你試圖不工作的規則是:

RewriteRule ^(.*[0-9]+\.html[^/])$ http://%{HTTP_HOST}/$1/ [L,R=301,QSA] 

不工作,因爲你的正則表達式是不正確的您的請求URI與.html結束,並沒有什麼在.html之後。因此\.html[^/]與URI不匹配,但\.htm.*[^/]確實匹配,因爲最後的[^/]匹配字母l

正確的規則是:

RewriteRule ^(.*[0-9]+\.html)$ http://%{HTTP_HOST}/$1/ [L,R=301] 

PS:你也不需要使用RewriteCond