Url使用Mod_rewrite解析/转换

时间:2013-03-11 01:24:55

标签: apache mod-rewrite

我想重写网址,以便用户输入或点击看起来像这样的链接: 的 “mysite.com” 要么 的http://mysite.com 要么 的 “www.mysite.com” 他们被带到 http://www.mysite.com

我目前在.htcaccess文件中使用以下代码,但似乎没有做任何事情:

RewriteEngine On
RewriteCond !^www\.mysite\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteCond $1 !^(favicon\.ico|favicon\.png|media|robots\.txt|crossdomain\.xml|css|js)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*) http://www.mysite.com/$1 [L,R=301,NE]

RewriteCond $1 !^(favicon\.ico|favicon\.png|media|robots\.txt|crossdomain\.xml|css|js)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url_params=$1 [L,QSA]

<filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
    #Header set Cache-Control "max-age=29030400, public"
</filesMatch>
<filesMatch "\\.(css)$">
    #Header set Cache-Control "max-age=29030400, public"
</filesMatch>
<filesMatch "\\.(js)$">
    #Header set Cache-Control "max-age=29030400, private"
</filesMatch>
<filesMatch "\\.(xml|txt)$">
    #Header set Cache-Control "max-age, public, must-revalidate"
</filesMatch>

*错误已修复。

我的网站现在加载但是例如,如果我去mysite.com,它不会将我重定向到http://www.mysite.com

1 个答案:

答案 0 :(得分:0)

好的,我解决了。事实证明我的重写条件错误。

正确的方式: RewriteCond $ 1!^(favicon.ico | favicon.png | media | robots.txt | crossdomain.xml | css | js) RewriteCond%{REQUEST_FILENAME}! - f RewriteCond%{REQUEST_FILENAME}!-d RewriteRule ^(。*)$ index.php?url_params = $ 1 [L,QSA]

RewriteCond!^ www.mysite.com [NC] RewriteCond%{HTTP_HOST}!^ $ RewriteCond $ 1!^(favicon.ico | favicon.png | media | robots.txt | crossdomain.xml | css | js) RewriteCond%{REQUEST_FILENAME}! - f RewriteCond%{REQUEST_FILENAME}!-d RewriteRule ^ /?(。*)http://www.mysite.com/ $ 1 [L,R = 301,NE]