将非www重定向到www和rewriterule

时间:2016-06-01 18:33:33

标签: php apache .htaccess redirect mod-rewrite

事实上,我正在研究一个小的PHP脚本。我创建了一些规​​则来将nonwww重定向到www版本,这是我的代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteRule app-([0-9]+)\.html app.html?id=$1 [L,QSA] 
AddType application/x-httpd-php5 .html .htm

重定向主页时工作正常,但是当我想重定向site.com/app-9.html时,它只是重定向到www版本,如下所示: www.site.com/app.html?id=9。 它应该将site.com/app-9.html重定向到www.site.com/app-9.html。我怎么能实现这个目标呢?

通:

  

site.com/app-9.html

目前的结果:

  

www.site.com/app.html?id=9

必填结果:

  

www.site.com/app-9.html

2 个答案:

答案 0 :(得分:1)

仅为app-9.html添加了验证,因为其他人需要该规则。

使用此:

RewriteEngine On

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

## added validation for app-9.html only
RewriteCond %{REQUEST_FILENAME}  !app-9.html -f
RewriteRule app-([0-9]+)\.html app.html?id=$1 [L,QSA] 

AddType application/x-httpd-php5 .html .htm

答案 1 :(得分:0)

可以插入

  

RewriteRule ^ / page / page?

进入你的重写规则?这将完全删除查询字符串。