免责声明:对模式重写一无所知
我是一个简单的.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>
行。我不知道这个问题似乎有什么想法?
答案 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>