1

我正在使用 mod_rewrite 来获取干净的 URL。到目前为止,一切正常:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule (.*) application.php?request=$1 [L,QSA]
</IfModule>

但是,我只是尝试添加另一个转换www.mysite.comurls的规则mysite.com,使用以下内容:

<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule>

结果:访问mysite.com时很好,但是访问时www.mysite.com,URL变得丑陋mysite.com/application.php?request=

如何调整我的 .htaccess 文件,以免发生冲突?

4

1 回答 1

2

您需要确保重定向规则路由规则之前,否则会应用路由规则,重写引擎循环(将继续循环直到 URI 停止更改),然后在重写的 URI 上发生重定向。

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On

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

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule (.*) application.php?request=$1 [L,QSA]
</IfModule>
于 2012-12-14T15:44:16.263 回答