繁体   English   中英

使用htaccess重写我的网址

[英]rewrite my url using htaccess

我在codeigniter项目中工作,我想使用htaccess重写我的URL。 我有一个类似abc.com/main/demo的URL,我想将其更改为abc.com/demo我只是删除了“ main”。 我怎么能做到这一点。

对不起,英语不好:(

实际上,第二个想法可能就是您要的:

<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>

对于简单的重定向,您不需要mod_rewrite。

apache指令Redirect或RedirectMatch应该足以满足您的要求:

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

在这里,我使用302重定向,因此它只是一个临时重定向,当您的网站正常(并且该重定向正常工作)时,您应该在301中对其进行更改,以使其永久不变。

现在,我们在回答中所要做的就是如何告诉您的Web HTTP客户端使用/ demo url而不是/ main / demo。 但是,您抱怨的是404 ...如果在/ demo根目录中没有可用的index.php或index.html,那就很正常了

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

如果您无权访问apache主配置,而只能访问.htaccess,并且如果您以其他网址运行其他几个网站,我们可能会找到更复杂的解决方案(例如,mod_rewrite根据网站名称重定向物理目录路径)。 但是,如果您需要更多信息,则必须向我们提供更多信息。

**这应该做到:

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

这可以解决问题,或者您可以访问www.tossdown.com了解更多详细信息**

这应该这样做:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM