Apache htaccess重写故障

Apache htaccess重写故障,apache,.htaccess,codeigniter,mod-rewrite,Apache,.htaccess,Codeigniter,Mod Rewrite,我完全无法在我的服务器上使用htaccess重写。这是对Codeigniter的基本index.php重写,在Mac上开发时效果良好,但在服务器上失败(CentOS、Apache 2、WHM) 尝试加载/about/将显示index.php页面/index.php/about将显示正确的页面。我尝试了我能想到的各种选择,但都没有用。下面是我的rewrite.log的示例 [dev.tirius.co.uk/sid#5d65288][rid#5e37c00/initial] (3) [per-di

我完全无法在我的服务器上使用htaccess重写。这是对Codeigniter的基本index.php重写,在Mac上开发时效果良好,但在服务器上失败(CentOS、Apache 2、WHM)

尝试加载/about/将显示index.php页面/index.php/about将显示正确的页面。我尝试了我能想到的各种选择,但都没有用。下面是我的rewrite.log的示例

[dev.tirius.co.uk/sid#5d65288][rid#5e37c00/initial] (3) [per-dir /home/tirius/subdomains/dev/public_html/] add path info postfix: /home/tirius/subdomains/dev/public_html/about -> /home/tirius/subdomains/dev/public_html/about/
[dev.tirius.co.uk/sid#5d65288][rid#5e37c00/initial] (3) [per-dir /home/tirius/subdomains/dev/public_html/] strip per-dir prefix: /home/tirius/subdomains/dev/public_html/about/ -> about/
[dev.tirius.co.uk/sid#5d65288][rid#5e37c00/initial] (3) [per-dir /home/tirius/subdomains/dev/public_html/] applying pattern '^(.*)$' to uri 'about/'
[dev.tirius.co.uk/sid#5d65288][rid#5e37c00/initial] (2) [per-dir /home/tirius/subdomains/dev/public_html/] rewrite about/ -> /index.php/about/
[dev.tirius.co.uk/sid#5d65288][rid#5e37c00/initial] (1) [per-dir /home/tirius/subdomains/dev/public_html/] internal redirect with /index.php/about/ [INTERNAL REDIRECT]
[dev.tirius.co.uk/sid#5d65288][rid#5e3f7c8/initial/redir#1] (3) [per-dir /home/tirius/subdomains/dev/public_html/] add path info postfix: /home/tirius/subdomains/dev/public_html/index.php -> /home/tirius/subdomains/dev/public_html/index.php/about/
[dev.tirius.co.uk/sid#5d65288][rid#5e3f7c8/initial/redir#1] (3) [per-dir /home/tirius/subdomains/dev/public_html/] strip per-dir prefix: /home/tirius/subdomains/dev/public_html/index.php/about/ -> index.php/about/
[dev.tirius.co.uk/sid#5d65288][rid#5e3f7c8/initial/redir#1] (3) [per-dir /home/tirius/subdomains/dev/public_html/] applying pattern '^(.*)$' to uri 'index.php/about/'
[dev.tirius.co.uk/sid#5d65288][rid#5e3f7c8/initial/redir#1] (1) [per-dir /home/tirius/subdomains/dev/public_html/] pass through /home/tirius/subdomains/dev/public_html/index.php
正如您所看到的,htaccess被选中,mod_rewrite被启用并正常工作,但index.php中似乎没有添加任何内容

这一定是Apache配置的问题,但我真的不知道它可能是什么

来自httpd.conf的示例

<Directory "/">
    Options ExecCGI FollowSymLinks IncludesNOEXEC Indexes MultiViews SymLinksIfOwnerMatch
    AllowOverride All
</Directory>

选项execgi FollowSymLinks包括noexec索引多视图symlinksFownerMatch
允许超越所有

这是我在CentOS上的.htaccess:

RewriteCond $1 !^(index\.php|images|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ index.php?/$1 [L]
请注意正斜杠前的问号

我认为这与将PHP作为FastCGI运行有关。我相信问号使前面的字符成为可选字符(即,它也将匹配index.ph)。我尝试了更多的研究,但找不到确切的原因。我想我只是尝试了我在寻找时能找到的重写规则的每一个变体,而没有费心问为什么它会起作用


很高兴能帮上忙。

1。确保AccessFileName设置为.htaccess 2。和AllowOverride均参考此文档:AccessFileName.htaccess。基本重定向工作正常,只是重写在黑暗中不起作用,但请尝试更改
$config['uri_protocol']='AUTO'
转到其他选项(在config.php文件中),看看是否有帮助。另外,这是CentOS上的my.htaccess:
RewriteCond$1^(index\.php | images | robots\.txt | favicon\.ico)RewriteRule^(.*)$index.php?/$1[L]
注意正斜杠前的问号。@PaulSkinner我的朋友,你是救命恩人。正斜杠前的问号完成了。这只是CentOS在语法上的不同吗?非常感谢。如果你想把它作为一个答案,我会把它标记为正确的。
RewriteCond $1 !^(index\.php|images|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ index.php?/$1 [L]