【问题标题】:Remove index.php and add www in htaccess Codeigniter删除 index.php 并在 htaccess Codeigniter 中添加 www
【发布时间】:2014-08-24 21:09:44
【问题描述】:

stackoverflow 社区。 我删除了 site.com/index.php 重复,我确实添加了 www,所以它看起来 www.site.com 并且工作得很好。在所有这些操作之后,我遇到了一个问题 - 如果我从显示非 www 版本的谷歌搜索访问我的网站,我会被重定向到 www 版本,但我在 ulr 中间得到 /?/,比如 site.com/ ?/reviews/acticle/3 ...你工作并打开了文章。但是我设法以某种方式摆脱了 /?/ 并且现在一切正常,但我的问题是: 如果我去 site.com/index.php 它会将我重定向到主页 如果我直接输入 f.e. site.com/index.php/reviews/article/3 它仍然有效。 那么,它仍然有效并且不重定向我是不是坏兆头?我无法以任何其他方式访问它,f.e.来自谷歌搜索,除了自己输入。 这是我的 htaccess 文件,我希望它看起来不会太乱:

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.info$
RewriteRule (.*) http://www.site.info/$1 [R=301,L] 

RewriteCond $1 !^(index.php|images|upload|robots.txt|css)
RewriteCond %{REQUEST_URI} !.(css¦js¦jpg¦gif)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L,QSA] 

RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://www.site.info/$1 [R=301,L]
AddDefaultCharset UTF-8

提前致谢!

【问题讨论】:

    标签: php .htaccess codeigniter rewrite


    【解决方案1】:

    要让 Codeigniter 在 apache 上运行,您需要一个简单的 .htaccess 和 config.php 设置。

    .htaccess

    RewriteEngine On
    
    # Redirect non-www to www
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
    
    # Remove WWW from the url
    #RewriteCond %{HTTPS} !=on
    #RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
    #RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
    
    # Optional to redirect trailing slashes
    #RewriteRule ^(.*)/$ /$1 [L,R=301]
    
    # Point all URI to codeigniter bootstrap except direct access to file or dir
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    

    application/config/config.php

    $config['base_url']  = '';
    $config['index_page'] = '';
    $config['uri_protocol'] = 'AUTO';
    

    这将产生:

    www.site.com/reviews/acticle/3 --> site.com/reviews/acticle/3 www.site.com/index.php/reviews/acticle/3 --> site.com/reviews/acticle/3

    同时摆脱?。

    【讨论】:

    • 也谢谢你,但问题没有解决......我的问题有点搞砸了,所以我想明确一点,此时我可以访问 site.com/index.php/acticle/3仅由我自己输入,所有链接都可以正常工作。 >:o 但我也可以访问 site.com/article/3
    • 现在,你让我以不同的方式回答你的问题。我猜您的意思是访问您的网站 URI,例如:site.com/index.php/article
    • 很抱歉造成混淆。但是,它是否需要修复?网站上的链接和谷歌搜索的链接效果很好,但如果我愿意,我可以去 site.com/index.php/article 吗?对不起,我也很困惑。
    • 看,如果您的配置设置为不在其 URI 中显示 index.php 并且 google 搜索索引将您的页面显示为 site.com/reviews/article,那么您就完成了。虽然您可以直接访问带有 index.php 的 URI,但这是您不必担心的事情,一旦您的配置正常工作,您的站点链接将不会受到影响,如果您担心用户通过在 URI 中键入 index.php 来访问您的站点 URI,您可以进行 301 重定向,但同样没有必要。
    • 啊,非常感谢,你让我冷静了下来。这正是我想听到的。
    【解决方案2】:

    从 codeigniter 中删除 index.php:

    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
    

    【讨论】:

    • 谢谢,但这并没有改变任何事情。 :(
    猜你喜欢
    • 2012-08-15
    • 2017-01-08
    • 2013-10-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2021-04-08
    • 2019-04-06
    • 2015-03-09
    相关资源
    最近更新 更多