2015-01-09 97 views
0

嗨朋友我添加了尾部斜線,並通過遵循ht訪問條件刪除在URL結尾的擴展它工作正常我的問題是如果我手動輸入URL沒有結尾斜槓它不會添加尾部斜槓自動例如,如果我打字以下網址自動追蹤斜線

www.example.com/project/product 

它不會增加trailng削減自動 我的HT接入條件是

Options -Indexes 
Options +FollowSymLinks +MultiViews 
RewriteEngine on 

# Forces a trailing slash to be added 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 

# disable directory browsing 
RewriteCond %{THE_REQUEST} ^.+?\ [^?]+\.php[?\ ] 
RewriteRule \.php$ - [F] 

RewriteCond %{THE_REQUEST} ^.+?\ [^?]+\.html[?\ ] 
RewriteRule \.html$ - [F] 

ErrorDocument 403 http://www.example.com/ 
ErrorDocument 404 http://www.example.com/ 

請給我你的指導,添加自動結尾的斜線,如果進入手動url

回答

0

這是因爲你依賴多視圖,這是由不同的模塊處理。該模塊處理之前 mod_rewrite的請求,這意味着您的規則將永遠不會得到處理。爲了做到這一點,你需要關閉多視圖和處理自己的映射:

Options -Indexes 
Options +FollowSymLinks -MultiViews 
RewriteEngine on 

# Forces a trailing slash to be added 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 

# Handle the php mapping 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRUle ^(.*?)/?$ /$1.php [L] 

# Handle the html mapping 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.html -f 
RewriteRUle ^(.*?)/?$ /$1.html [L] 

# disable directory browsing 
RewriteCond %{THE_REQUEST} ^.+?\ [^?]+\.php[?\ ] 
RewriteRule \.php$ - [F] 

RewriteCond %{THE_REQUEST} ^.+?\ [^?]+\.html[?\ ] 
RewriteRule \.html$ - [F] 

ErrorDocument 403 http://www.example.com/ 
ErrorDocument 404 http://www.example.com/ 
+0

如果我禁用多視圖同一頁面出現在頁內三次等各個環節工作不 – rmrps

+0

@rmrps這可能是因爲尾部的斜線改變了你的相對URL基礎,並且你所有的鏈接都是相對的。將您的鏈接更改爲絕對網址或在您的頁面標題中添加一個基準:'' –