【问题标题】:.htaccess in folder, non-www to www. Issues with another RewriteRule.htaccess 在文件夹中,非 www 到 www。另一个 RewriteRule 的问题
【发布时间】:2013-10-04 07:36:20
【问题描述】:

我在一个文件夹中的 .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),则 URL 将类似于 http://www.mySite.com/profile/index.php?username=username

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

谢谢

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多