我的项目位于C:/wamp/www/v3
当我通过http://localhost/v3
打开项目时,我得到了预期的默认控制器。
现在,在我的代码中,我有一些网址,例如<a href="/login"></a>
,但是当我点击时,我会找到一个未找到的网页,因为它会打开http://localhost/login
而不是http://localhost/v3/login
我已尝试使用htaccess进行虚拟主机和重写库,但我无法重定向到正确的网址。
我的htaccess位于/ v3 /:
内<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
答案 0 :(得分:0)
在应用程序的配置(根文件夹)/application/config.php中,您可以设置base_url变量。尝试将其设置为“http:// localhost / v3”。
答案 1 :(得分:0)
您可以尝试将一个htaccess文件放在C:/ wamp / www目录中,并在其中添加如下的重写规则(注意 - 未经测试,可能需要修改或两次):
RewriteCond %{REQUEST_URI} !^/v3/
RewriteRule ^/(.*)$ /v3/$1 [R]
但这意味着所有不以/ v3 /开头的网址将被重写为/ v3 /开头。真正的问题是你的网址以/开头,所以浏览器正在完成它的工作,并在开头要求没有/ v3的网址。
答案 2 :(得分:0)
问题是您的锚点设置为指向/login
,这意味着http://mydomain/login
。起始/
表示“指向webroot”。
快速执行此操作(特别是在使用模板时),是将base_url()
和site_url()
(from the URL helper class)的值传递给您的视图,并在其中添加链接,如:
<a href="<?= base_url().'/login' ?>">Login</a>
或者如果我将$data
传递给base_url()
作为$ data ['base_url']的模板:
<a href="{base_url}login">Login</a>
注意:base_url()
和site_url()
包含一个尾部斜杠
效果会给你这个(假设你没有使用重写删除“index.php”):
<a href="http://localhost/v3/index.php/login">Login</a>
或者如果删除,它将返回:
<a href="http://localhost/v3/login">Login</a>
答案 3 :(得分:0)
我习惯使用site_url('link / to');在我的网站上的任何锚点上,当我必须将它迁移到另一个服务器/文件夹时,它节省了我很多时间。
如果您不想这样做,可以使用basetag为所有链接添加基本网址。
在标签中:
<base href="<?php echo site_url('/'); ?>" />
另外,如果我理解正确,你已经尝试将RewriteBase / v3 /放在.htaccess中了,对吗?
此致