我知道这个问题更适合服务器错误,但遗憾的是我因质量问题而被禁止(我在2-3个问题上被投了票。)所以问下这些问题的下一个最好的地方就在这里。
我有两个与CodeIgniter路由相关的问题。
第一个问题是我似乎无法在网址中删除index.php
。我跟着instructions on how to remove it。我的.htaccess文件中有以下mod重写代码(见下文),位于我的WAMP服务器的根目录(CI位于根目录,不在自己的文件夹中)。我在httpd.conf
文件LoadModule rewrite_module modules/mod_rewrite.so
中取消注释了这一行。我从index.php
删除了$config['index_page'] = "index.php";
。我重新启动了所有WAMP服务。
我的第二个问题是我有一个名为search
的控制器和一个名为index
的方法。我想将结果网址从http://localhost/index.php/search/index
更改为http://localhost/search/whatever_im_searching_for
。我在routes.php文件中尝试了以下自定义路由,但它不起作用:$route['search/(.*)'] = "search/$1";
RewriteEngine On
# Put your installation directory here:
# If your URL is www.example.com/, use /
# If your URL is www.example.com/site_folder/, use /site_folder/
RewriteBase /
# Do not enable rewriting for files or directories that exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# For reuests that are not actual files or directories,
# Rewrite to index.php/URL
RewriteRule ^(.*)$ index.php/$1 [PT,L]
我正在努力理解.htaccess
中的代码以及如何使用CI的自定义路由。任何帮助将不胜感激。提前谢谢。
编辑1
答案 0 :(得分:1)
像这样编辑你的htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{REQUEST_URI} ^LoginTut.*
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond $1 !^(index\.php|images|table-images|js|robots\.txt|css|captcha)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>
要将您的搜索结果放在网址中,您可以查看以下内容:
答案 1 :(得分:1)
第二个问题:
$route['search/(:any)'] = "search/index/$1";
答案 2 :(得分:1)
检查Apache的默认配置文件。在WAMP上它可能在
<WAMPSERVER_HOME>\bin\apache\Apache2.2.xx\conf
如果它看起来像这样:
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
然后改变两者:
AllowOverride None
为:
AllowOverride All
答案 3 :(得分:1)
我遇到了同样的问题,我只能通过写.htaccess
:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
它完美无缺。