.htaccess在文件夹中,非www到www。另一个RewriteRule的问题

时间:2013-10-04 07:36:21

标签: regex apache .htaccess mod-rewrite

文件夹中的.htaccess如下:

RewriteEngine On

RewriteBase /profile/


RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?username=$1


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

基本上,如果你访问www.mySite.com/profile/Username,我的index.php文件将'Username'作为$ _GET变量,URL看起来很干净(www.mySite.com/profile/Username )

但是,如果您访问mySite.com/profile/username(省略www),则网址将显示为http://www.mySite.com/profile/index.php?username=username

我怎样才能这样做只添加www而不会弄乱URL?

由于

1 个答案:

答案 0 :(得分:1)

规则的排序在.htaccess中很重要。

请尝试使用此代码:

RewriteEngine On
RewriteBase /profile/

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ index.php?username=$1 [L,QSA]