2010-07-31 55 views
1

我是很新,MOD-重写,而且我遇到了麻烦这一权利:现代重写新手CI中

我想http://myurl.com/specialhttp://www.myurl.com/special既重定向到http://myurl/index.php/special不改变的URL浏览器中的访客。

目前,我的.htaccess看起来是这样的,从网址

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^www.myurl.com [NC] 
RewriteRule ^(.*)$ http://myurl.com/$1 [L,R=301] 
</IfModule> 

我尝试了一堆不同的东西来重定向特殊的URL,但到目前为止,一切都没有工作对我来说,每一个去除WWW不同的不良结果。请让我知道,如果你有一个想法,我可以在这里添加!

我尝试这样做:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^special$ /index.php/special$1 [NC] 
RewriteCond %{HTTP_HOST} ^www.myurl.com [NC] 
RewriteRule ^(.*)$ http://myurl.com/$1 [R=301] 
</IfModule> 

这使得http://myurl.com/special重定向到默认的控制器,并使得http://www.myurl.com/special重定向到http://myurl.com/index.php/special和变化在浏览器的URL。这些都不是很对,虽然第二个更接近我所需要的。

回答

2

哦,不,你不需要htaccess的做那只是使用CI的路线。这里先改变你的HTACESS这样:

# Customized error messages. 
ErrorDocument 404 /index.php 

# Set the default handler. 
DirectoryIndex index.php 

# Various rewrite rules. 
<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
</IfModule> 

这个人是这样的方式更好,你从来没有改变任何东西不是img目录或任何东西就让它纯粹。现在为你的问题。

在Application-> config文件夹中打开php路径。

现在CI通过默认的index.php所有文件路径,所以我假设你反正是说你默认控制器路由“控制器”像你的情况特殊回主站点只是这样做:

如果默认的控制器仍然是“欢迎”,因为它被下载你会写这样的路线:

$route['special/(:any)'] = "welcome"; 

您的网址不会改变,一切都将是完美的

,但不停止阅读YET,JU ST要确认

这是你的路线将是什么样子你完成之后:

//these two are for CI 
$route['default_controller'] = "welcome"; 
$route['scaffolding_trigger'] = ""; 

//this is your route sending all and any traffic for special 
//no matter how many levels it will always go to welcome->index. 
$route['special/(:any)'] = "welcome"; 

//if you want to use sub-pages or other functions within your welcome controller 
//i.e. welcome->signup. then just send the route information to the controller like this: 
$route['special/(:any)'] = "welcome/$1"; 

在PHP中路由类是非常强大的,看到这个页面,这只是一块此处了解更多详细信息,对路由:

CodeIgniter User Guide -> URI Routing

真的希望我没有更多地困惑你。祝你好运

+0

嘿布兰登,感谢您的快速反应。我有这样的.htaccess文件的原因是让所有请求http://www.myurl.com重定向到http://myurl.com。 我需要的是继续,但除了所有请求http://myurl.com/special重定向到http://myurl.com/index.php/special。 还有什么可以帮助你做到这一点?我尝试修改htaccess并按照你的建议路由文件,但那不起作用。 myurl.com/special URL有一个404 Not Found页面。 – itwasthewind 2010-07-31 22:36:13

+0

我意识到我没有像你刚才提到的那样设置htaccess,我试过了,但现在任何没有index.php的网址(如myurl.com/special)只显示默认的家庭控制器。任何想法为什么这可能是? – itwasthewind 2010-07-31 23:06:51

+0

与htaccess它被设置为做myurl.com/index.php/special和myurl.com/special到同一页面只是使url更清洁。但我刚刚意识到发生了什么我很抱歉,我没有阅读,正确的只是删除你添加的路线,它会完美的工作我很抱歉,我以为你想让myurl.com/special去默认页面htaccess会一直这样做,我很抱歉,我应该仔细阅读它离开htaccess,并删除你添加的路线。让我知道如果这工作。 – BrandonS 2010-08-01 02:58:27

1

假设www.myurl.com和myurl.com都是建立为ServerAliases在VirutalHost,然后东西一样简单......

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>