1

我在文件夹中的 .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 文件将“用户名”作为 $_GET 变量,并且 URL 看起来很干净(www.mySite.com/profile/Username)

但是,如果您访问 mySite.com/profile/username(省略 www),则 URL 看起来像http://www.mySite.com/profile/index.php?username=username

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

谢谢

4

1 回答 1

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]
于 2013-10-04T07:38:15.307 回答