2013-03-10 88 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