3

我知道这个问题更适合服务器故障,但不幸的是,我因质量不佳的问题而被禁止(我在我提出的 2-3 个问题上被否决了。)所以问这些问题的下一个最佳地点是这里。

我有两个与 CodeIgniter 路由相关的问题。

第一个问题是我似乎无法摆脱index.phpurl。我按照有关如何删除它的说明进行操作。我的 WAMP 服务器根目录下的 .htaccess 文件(见下文)中有以下 mod 重写代码(CI 位于根目录,而不是在其自己的文件夹中)。我在httpd.conffile中取消了对这一行的注释LoadModule rewrite_module modules/mod_rewrite.so。我index.php$config['index_page'] = "index.php";. 我重新启动了所有 WAMP 服务。

我的第二个问题是我有一个名为的控制器search和一个名为index. 我想将生成的 URL 从 更改http://localhost/index.php/search/indexhttp://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

在此处输入图像描述

4

4 回答 4

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
于 2013-08-25T10:09:14.207 回答
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>

要将您的搜索词放在网址中,您可以查看以下内容:

https://stackoverflow.com/a/12070284/1379394

于 2013-08-23T09:43:19.450 回答
1

第二个问题:

$route['search/(:any)'] = "search/index/$1";
于 2013-08-25T01:11:53.440 回答
1

我有同样的问题,我只通过写在我的.htaccess

RewriteEngine on

RewriteCond $1 !^(index\.php|images|robots\.txt)

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

它运行良好。

于 2013-11-06T00:26:23.457 回答