这是网址
http://rapidsurfing.net/visio/xip8yT
我的网站是在codeigniter中开发的。所以当链接上面的url时我想去一个控制器功能。我怎么能用htaccess做到这一点。
这是我的httaccces代码
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^p\/(.*)$ page.php?q=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?admin/index/url=$1 [QSA,L]
</IfModule>
url
的值为xip8yT
。admin
是控制器名称,index
是该控制器中的函数。
但是当我将网址http://rapidsurfing.net/visio/xip8yT
粘贴到地址栏中时,会加载404 not found错误。
我的代码中有什么问题或错误?
我的默认控制器是admin。
答案 0 :(得分:1)
首先确保在routes.php
文件中设置默认控制器。您的问题的完整答案是我使用CI的方式。 CodeIginter本身建议使用.htaccess
将所有请求重定向到索引页面和默认控制器,这就是你所做的。但我建议使用这段代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /yourbasefoldername
### Canonicalize codeigniter URLs
# If your default controller is something other than
# "welcome" you should probably change this
RewriteRule ^(yourdefaultcontrollername(/index)?|index(\.php)?)/?$ / [L,R=301]
RewriteRule ^(.*)/index/?$ $1 [L,R=301]
# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
# Enforce www
# If you have subdomains, you can add them to
# the list using the "|" (OR) regex operator
# RewriteCond %{HTTP_HOST} !^(www|subdomain) [NC]
# RewriteRule ^(.*)$ http://localhost/dfgamez/$1 [L,R=301]
# Enforce NO www
# RewriteCond %{HTTP_HOST} ^www [NC]
# RewriteRule ^(.*)$ http://localhost/dfgamez/$1 [L,R=301]
###
# Removes access to the system folder by users.
# Additionally this will allow you to create a System.php controller,
# previously this would not have been possible.
# 'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# Without mod_rewrite, route 404's to the front controller
ErrorDocument 404 /index.php
</IfModule>
只需将站点地址后面的每个斜杠都添加到index
函数参数中。
和平了!