当网址类型为:
时,我在Codeigniter中遇到问题example.gov.ar/news (without www and .gov)
我需要它重定向到:
www.example.gob.ar/news (with www and .gob)
但它重定向
www.example.gob.ar/index.php/news
这是我的htaccess文件:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
#non-www to www
RewriteCond %{HTTP_HOST} !^www\.(.*)
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
#.gov.ar to .gob.ar
RewriteCond %{http_host} ^example.gov.ar$ [OR]
RewriteCond %{http_host} ^www.example.gov.ar$
RewriteRule ^(.*)$ http://www.example.gob.ar/$1 [R=301,L]
注意:我的配置文件有$ config [' index_page'] ='&#39 ;;
提前致谢。
答案 0 :(得分:2)
尝试切换规则的顺序。
RewriteEngine on
#non-www to www
RewriteCond %{HTTP_HOST} !^www\.(.*)
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
#.gov.ar to .gob.ar
RewriteCond %{http_host} ^example.gov.ar$ [OR]
RewriteCond %{http_host} ^www.example.gov.ar$
RewriteRule ^(.*)$ http://www.example.gob.ar/$1 [R=301,L]
# Redirect to index.php internally
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
根据所有规则重新评估.htaccess触发的外部重定向,因此顺序非常重要。
在更改的顺序中,外部重定向首先发生,因此只有最终的URL与第三个RewriteRule匹配,然后在外部不可见。