2013-03-10 51 views
0

到目前爲止,我.htaccess是這樣的:國防部重寫刪除斜線,但保持對目錄

RewriteEngine On 
    RewriteBase/
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
    <FilesMatch "\.(htm|php|js|css|htc|png|gif|jpe?g|ico|xml|csv|txt|swf|flv|eot|woff|svg|ttf|pdf|gz)$"> 
    RewriteEngine Off 
    </FilesMatch> 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule .* index.php [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule .*\.html$ index.php [L] 

我想有網址尾隨重定向到一個沒有斜槓。但是應該保留目錄的斜線。

任何幫助將不勝感激!

更新: 經過一些更多的Google研究,我爲我組裝了一些工作解決方案。這兩個重寫刪除結尾斜槓和www重定向正在工作。

RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [L,R=301] 
    RewriteCond %{HTTP_HOST} ^rudolfapotheke.de$ [NC] 
    RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [L,R=301] 
+0

對不起,我的英語不好.... – Arwed 2013-03-10 20:47:39

回答

0

重定向那些有斜線,您需要檢查的路徑是用RewriteCond一個目錄,然後包括RewriteRule如果文件名配襯/$

因此,這將是這個樣子:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)/$ $1 [R=permanent,L] 
+0

對不起,不適合我。總是一個所需的功能不起作用。因爲它是從非www到www的重定向工作。如果我添加一些東西來刪除斜槓,www重定向停止。 – Arwed 2013-03-10 21:55:01

1

首先,我會改變你的FilesMatchRewriteCond

RewriteCond %{REQUEST_FILENAME} !\.(?:htm|php|js|css|htc|png|gif|jpe?g|ico|xml|csv|txt|swf|flv|eot|woff|svg|ttf|pdf|gz)$ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php [L] 

,並簡化爲下RewriteRule

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule \.html$ index.php [L] 

格局或將兩個規則一起,測試只是

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php [L] 

終於爲刪除尾部規則斜線

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ $1 [R,L] 
+0

Thx這個鼓舞人心的答案。迄今尚未測試,因爲經過幾個小時的努力,我找到了一個可行的解決方案。 htacess的語言對我來說仍然是一個很大的奇蹟,所以我不知道這是否是最好的解決方案:'RewriteRule ^(。+)/ $ http://%{HTTP_HOST}/$ 1 [L,R = 301] RewriteRule ^(。*)http://www.% {HTTP_HOST}/$ 1 [L,R = 301]' – Arwed 2013-03-11 22:25:03

+0

@Arwed乍一看,這看起來很像精細。如果它適合你,這是最好的答案。 :-) – 2013-03-11 22:32:16