2011-06-24 106 views
1

我正在codeigniter项目中工作 我想用htaccess重写我的URL。我有一个像abc.com/main/demo的URL,我想将其更改为abc.com/demo 我只是删除了“主”。 我该如何实现它。使用htaccess重写我的网址

对不起,我英文不好:(

+0

是主要的控制器?如果是,那么你可能必须将它设置为你的默认控制器在application/config/routes.php中并使用建议.htaccess – Kumar

+0

main是位于控制器文件夹中的文件夹名称....并且demo是我的控制器名称 – chhameed

回答

1

**这应该这样做:

RewriteEngine On 
RewriteBase/
RewriteRule ^main/(.*)$ /$1 [R] 

这也有问题,或者你可以去www.tossdown .com更多详情**

0

这应做到:

RewriteEngine On 
RewriteBase/
RewriteRule ^main/(.*)$ /$1 [R] 
+0

感谢您的回复 。我在我的.htaccess中添加了这段代码,但它不起作用。其显示页面404页面未找到 – chhameed

+0

也许我误解了你的问题。网站本身驻留在'/ main /'还是'/'?你的客户是否期望去'/ demo'或'/ main/demo'?客户应该被从一个重定向到另一个,还是两个URL都可以工作? – Fraxtil

1

其实,转念一想这可能是你问的:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteBase /main 

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

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 
+0

如果你不关心index.php的东西,你可以在'RewriteBase/main'后面退出一切# – Swift

+0

mike ...我陷入了问题..我很担心这一点。我已经有一个.htaccess文件,我只是在我的htaccess中包含此代码,但我重定向到404页面找不到 – chhameed

+0

您可以发布你的.htaccess中的代码? – Swift

1

你做不需要mod_rewrite简单重定向。

apache指令重定向或RedirectMatch应该b Ë够你:

RedirectMatch 302 ^/main/(.*)$ https://my.website.com/$1 

这里我使用302重定向,所以这只是一个临时重定向,当你的网站将是确定(和重定向工作),你应该使之成为改变它在301常驻。

现在我们都在做的是我们的答案是如何告诉您的Web HTTP客户端使用/演示url而不是/ main/demo。但是你在抱怨404 ......如果你在root/demo目录下没有工作的index.php或index.html,那么它就是'正常'

所以我想你的问题不仅是如何重定向用户在另一个目录,但如何使您的/var/www/mysite/main/demo目录(或类似的东西),与此目录中的所有文件,在/ demo/* url而不是/ main/demo/*。在这个配置中,我们可以猜到/var/www/mysite/是你的DocumentRoot。即这是您的Web服务器的根。最简单的解决方案是通过将DocumentRoot更改为/var/www/mysite/main来更改此根目录。您可以在VirtualHost的主配置中执行此操作,也可以为您的项目创建一个新的VirtualHost。

如果您没有访问Apache主配置,但只能访问.htaccess,并且如果您在其他一些url中运行其他几个网站,我们可能会发现更复杂的解决方案(例如使用mod_rewrite根据网站名称重定向物理目录路径)。但是如果你想要更多的东西,你必须给我们更多的信息。

+0

感谢regilero的详细解答...我把它作为abc.com/demo.But正如我所说,我在codeigniter工作。实现这段代码后,它正确地删除了“主”,但它给了我错误的控制器没有找到..因为我的控制器我躺在主文件夹中:-( – chhameed

+0

@ Hameed:事实上,你的codeignitier代码库不是但是在main上是非常重要的,只要使用apache就会破坏你的东西,你肯定会找到一个解决方案,codeignitier处理url和目录,而不是用apache和mod_rewrite,我不能帮你解决这个问题,主'是codignitier找到你的控制器的重要信息,你将有隐藏这些信息的问题(他怎么知道在哪里可以找到你的演示控制器?)。 – regilero

0

我希望这不是千分之一答案...

RewriteEngine On 
RewriteRule ^demo/$ /main/demo/