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]

我希望将带有斜杠的网址重定向到没有的网址。但是应该保留目录的斜线。

任何帮助将不胜感激!

更新:经过更多的谷歌研究,我为我组装了一些可行的解决方案。删除尾部斜杠的重写和 www 的重定向都有效。

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

2 回答 2

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]
于 2013-03-11T10:21:37.090 回答
0

要重定向带有斜杠的那些,您需要检查路径是否是带有 a 的目录,然后如果文件名匹配RewriteCond则包含 aRewriteRule/$

所以它看起来像这样:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ $1 [R=permanent,L]
于 2013-03-10T20:52:06.840 回答