首页 文章

htaccess重写麻烦

提问于
浏览
3

我完全坚持htaccess重写不能在我的服务器上工作 . 它是Codeigniter的一个基本的index.php重写,在我的Mac上进行开发时工作正常但在我的服务器上失败(CentOS,Apache 2,WHM)

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

尝试加载/ 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>

1 回答

  • 1

    这是我在CentOS上的.htaccess:

    RewriteCond $1 !^(index\.php|images|robots\.txt|favicon\.ico)
    RewriteRule ^(.*)$ index.php?/$1 [L]
    

    注意正斜杠之前的问号 .

    我认为其原因与将PHP作为FastCGI运行有关 . 我相信该问号使前面的字符可选(即它也匹配index.ph) . 我已经尝试过多研究一下,但找不到明确的理由 . 我想我只是尝试了我在寻找时可以找到的重写的每个变体,并且没有理会为什么它有效 .

    很高兴有帮助 .

相关问题