htaccess删除index.php并将www添加到expressionengine中的url

时间:2016-01-15 07:17:44

标签: php .htaccess codeigniter expressionengine

我通过表达式创建了一个网站,在htaccess中我需要删除index.php并将www添加到无www url' s。 这是我现在的.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # Add www to url
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

    # Directs all EE web requests through the site index file
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

    # Removes index.php from ExpressionEngine URLs
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteCond %{REQUEST_URI} !/system/.* [NC]
    RewriteRule (.*?)/index\.php/*(.*) /$1$2 [R=301,NE,L]

</IfModule>

但是上面的代码有一些问题,当url有www本身并且没有index.php在任何地方并且一切都很好,但是当我从url中删除www来测试&#34;添加WWW&#34;部分它不再起作用,网址损坏了这个:

http://www.example.com/index.php?/segment1/segment2/

一个index.php出现了。我不知道该怎么做,任何帮助都会得到满足

2 个答案:

答案 0 :(得分:1)

试试这个..

RewriteEngine On

#Redirect non-www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

它会从网址中删除index.php并添加www作为前缀。

答案 1 :(得分:0)

www重定向可能不起作用,因为没有通配符,保持简单并指定您的域名:

# Redirect to www
# -------------------
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

我希望你能以错误的方式删除和添加index.php,如果在URL中指定,我首先重定向它,然后将其添加到隐藏中:

# Redirect specific index.php requests in URL
# ------------------------------
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{REQUEST_URI} !/system/.* [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]

# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

还可以尝试使用和不使用?在这一行,根据服务器设置,可能不需要这样做:

RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

RewriteRule ^(.*)$ index.php/$1 [L,QSA]