【问题标题】:redirect all non www to www. for Cakephp site将所有非 www 重定向到 www。对于 Cakephp 网站
【发布时间】:2019-06-06 08:37:25
【问题描述】:

大家好,我在将非 www 页面重定向到 www 时遇到了一些问题。我的 cakephp 网站的页面。

我试过了

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

但它似乎不起作用。

我的 cakephp 应用程序位于一个子文件夹中。例如。 www.domain.com/my

我已将上述代码添加到根文件夹www.domain.com/

有什么建议吗?谢谢?

*更新

这是我的 .htaccess 文件

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^.*$ http://www.domain.com%{REQUEST_URI} [R=301,L]

我在网址中插入了一个额外的webroot/index.php?url=。而不是www.domain.com/my/apple,我得到www.domain.com/my/webroot/index.php?url=apple

再次感谢大家。

【问题讨论】:

    标签: apache .htaccess cakephp redirect


    【解决方案1】:

    您的代码不太正确。见下文。

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
    RewriteRule ^.*$ http://www.domain.com%{REQUEST_URI} [R=301,L] # <-- Mind the 'L'!
    
    RewriteRule ^$ webroot/    [L]
    RewriteRule (.*) webroot/$1 [L]
    

    【讨论】:

    • 谢谢!但是还是有问题。 url 被重定向,但我在 url 中插入了一个额外的“webroot/index.php?url=”。而不是 www.domain.com/my/apple,我得到 www.domain.com/my/webroot/index.php?url=apple
    • 我意识到文件中的 .htacess 中有一个默认行“RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]”。我无法删除该行,因为页面会显示错误。
    • 然后把默认的蛋糕规则放在下面(我更新了我的答案以显示结果)
    • @mobz 既然你已经让它工作了,你应该考虑将你的 Apache webroot 指向 APP/webroot 而不是你的 APP 根目录。您可以将 www 域的重写规则放在 .htaccess 文件中。祝你好运!
    【解决方案2】:

    如果域名是 .co.uk

    <IfModule mod_rewrite.c> 
       RewriteEngine On
       RewriteCond %{HTTP_HOST} ^domain\.co\.uk$ [NC] 
       RewriteRule ^.*$ http://www.domain.co.uk%{REQUEST_URI} [R=301,L]
    
       RewriteRule ^$ app/webroot/    [L]
       RewriteRule (.*) app/webroot/$1 [L]
    </IfModule>
    

    【讨论】:

      【解决方案3】:

      重写引擎开启

      RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
      RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
      
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ app/webroot/$1 [QSA,L]
      

      【讨论】:

        【解决方案4】:

        我已经尝试了下面的代码,它对我有用:

        <IfModule mod_rewrite.c>
           RewriteEngine on
           RewriteCond %{HTTP_HOST} ^gigsadda\.com$ [NC]
           RewriteRule ^.*$ http://www.gigsadda.com%{REQUEST_URI} [R=301,L] 
           RewriteRule    ^$ app/webroot/    [L]
           RewriteRule    (.*) app/webroot/$1 [L]
        </IfModule>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-12
          • 2020-12-28
          • 2019-03-08
          相关资源
          最近更新 更多