我想删除自带index.php
的默认Codeigniter
。
我已经能够使用此代码删除它
RewriteRule ^(.*)$ index.php/$1 [L]
现在可以example.com/index.php/blog
访问 example.com/blog
我后来希望在URL
前加www
作为前缀,example.com/blog
应该使用这些重写规则重定向到www.example.com/blog
RewriteCond %{HTTP_HOST} ^(?!www\.)(.+) [NC]
RewriteRule ^(.*) http://www.%1/$1 [R=301,NE,L]
将上面的代码添加到我的.htaccess
文件的末尾后,它开始行为不端。
如果我将www.example.com/blog
输入URL
栏,则可以正常使用,但如果我输入example.com/blog
,则会重定向到www.example.com/index.php/blog
我做错了什么?
我希望example.com/blog
重定向到www.example.com/blog
注意:我正在使用Codeigniter
框架。
已添加:此代码仅限于我之前的代码。也许这是问题,请帮助!!!
RewriteCond $1 !^{index\.php|[assests/images/themes/fonts/style/scripts/js/install]|robot\.txt|favicon\.ico}
答案 0 :(得分:0)
试试这个:
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ example.com/$1 [L,R=301]
答案 1 :(得分:0)
经过很多技巧并在@Tpojka给出的post之后我能够想出这个
RewriteEngine On
RewriteBase /
# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
# no www -> www
RewriteCond %{HTTP_HOST} ^(?!www\.)(.+) [NC]
RewriteRule ^(.*) http://www.%1/$1 [R=301,NE,L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
这家伙是我的问题
RewriteCond $1 !^{index\.php|[assests/images/themes/fonts/style/scripts/js/install]|robot\.txt|favicon\.ico}
我需要有关如何排除文件夹和某些文件的帮助,例如我在故障行中尝试过的robot.txt
文件。
答案 2 :(得分:0)
这是我个人使用的完整.htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>