简单.htaccess不会重写,似乎根本不匹配

时间:2015-04-01 06:18:01

标签: apache .htaccess mod-rewrite redirect rewrite

应该是直截了当的。 http://example.com/denver-cars/未重定向到http://example.com/newcars-in-denver/。它只是尝试加载/ denver-cars /和denver-cars在URL中。我在这里错过了什么吗?我试过在规则列表中上下移动它并尝试了多种类型的标志无济于事。有人解释我的3小时问题需要10秒才能解决?

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

# Force www
RewriteCond %{HTTP_HOST} ^site.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]

# Redirect google index dir's to new dir
RewriteRule ^/(.*)-cars/ /newcars-in-$1/  [NC,R=301,L]

# Disable rewrite for Folder Names
RewriteCond %{REQUEST_FILENAME} [NC,OR]
RewriteCond %{REQUEST_FILENAME} [NC,OR]
RewriteCond %{REQUEST_URI} ^awstats
RewriteRule .* - [L]

# Permit pretty URL directories
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L]

## Allow image hotlinks from my domains
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com?.*$
RewriteRule .*\.jpg$      -        [F,L]

1 个答案:

答案 0 :(得分:0)

你的正则表达式中有一个领先的斜杠。用于匹配htaccess文件中的规则的URL删除了前导斜杠,因此^/(.*)永远不会匹配任何内容。你想要:

RewriteRule ^(.*)-cars/ /newcars-in-$1/  [NC,R=301,L]