.htaccess(mod_rewrite)php重定向不起作用

时间:2014-08-28 11:34:23

标签: php apache .htaccess mod-rewrite redirect

免责声明:对模式重写一无所知

我是一个简单的.htacces代码如下:

Options -Indexes
ErrorDocument 404 /filenotfound.php

RewriteEngine On
RewriteBase /

### hide .php extension snippet    
## To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} \s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R=302,L,NE]

## add a trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301,NE]

## To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

我有一些内部重定向,如果用户成功登录,它应该重定向到另一个文件夹的索引文件。在添加此.htaccess文件之前,它工作正常。

这就是我重定向的方式:

function redirectTO($url = null){
    if($url != null){
        header("Location:{$url}");
        exit();
    }
}

redirectTO('agent/index.php');

编辑:添加该模式重写代码后,重定向已停止工作。我不知道我是否需要从另一个堆栈溢出帖子中复制的所有代码。如果您认为某些.htaccess代码无关紧要,请随时提供建议。

顺便说一下,我还在<base href="/" />部分的html中添加了此<head>行。我不知道这个问题似乎有什么想法?

1 个答案:

答案 0 :(得分:2)

尝试使用此代码,但必须将文件夹名称放在

之后

RewriteBase / CodeIgniter /在第9行。

<IfModule mod_rewrite.c>
    RewriteEngine On
    # !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
    # slashes.
    # If your page resides at
    # http://www.example.com/mypage/test1
    # then use
    # RewriteBase /mypage/test1/
    RewriteBase /CodeIgniter/CodeIgniter/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
    </IfModule>

    <IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
    </IfModule>