htaccess重定向所有网址,如果他们没有www前缀到具有www前缀的新网址

时间:2014-12-09 10:29:06

标签: apache .htaccess mod-rewrite redirect

我在HTACCESS中有这个。

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

这样可行,但如果域有一些方向性,它就不起作用。

A:    site.com/users/profiles/index.php?id=1

B:    site.com/index.php?id=1

" A"无法重定向并按原样返回" B"重定向到www.site.com/index.phpid=1

以下是site.com/user /

中htaccess的内容
Options -Indexes +FollowSymLinks
RewriteEngine On
###########music#######
RewriteCond %{THE_REQUEST} \ /+index\.php\?artist=([^&]+)&title=([^&]+)&a=([^&\ ]+)
RewriteRule ^ /audio/%1/%2/%3? [L,R=301]
RewriteCond %{THE_REQUEST} \ /+audio\.php\?artist=([^&]+)&title=([^&\ ]+)
RewriteRule ^ /audio/%1/%2? [L,R=301]
#################internallly redirect////////////
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?artist=$1&title=$2&a=$3 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^audio/([^/]+)/([^/]+)/([^/]+)$ index.php?artist=$1&title=$2&a=$3 [L,QSA]
###############gzip######
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/png A2592000
ExpiresByType image/x-icon A2592000
#ExpiresByType text/css A86400
#ExpiresByType text/javascript A86400
ExpiresByType application/x-shockwave-flash A2592000
#
<FilesMatch "\.(gif¦jpe?g¦png¦ico¦swf)$">
Header set Cache-Control "public"
</FilesMatch>
AddType text/cache-manifest appcache

如何修改此选项以重定向所有?

1 个答案:

答案 0 :(得分:1)

由于您在/users/目录中也有.htaccess,因此父目录中的任何.htaccess对包含/users/的请求无效。

RewriteEngine On的{​​{1}}行下方插入此规则:

/users/.htaccess

PS:有从子.htaccess继承父重写规则的方法,但这些规则在应用当前.htaccess 后执行,这可能会产生错误的结果您还在内部重写了一些URI并更改了RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301] 的值。

参考文献: