mod_rewrite在apache 2.4上运行不正常

时间:2014-11-17 10:52:34

标签: apache .htaccess mod-rewrite apache2 apache2.4

我之前使用过其他主机,一切正常,但现在我已将其更改为新主机。在新的主机上安装了apache 2.4。

我有下一条规则:

<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /
        RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
        RewriteRule ^/?(.*) http://%1/$1 [L,R=permanent]

        RewriteRule manage/ajax/(.*?)$ manage/ajax/index.php [QSA,L]
        RewriteRule manage/json/(.*?)$ manage/json/index.php [QSA,L]

        RewriteCond %{REQUEST_URI} !\.(.+)$
        RewriteRule ckfinder/(.*?)$ ckfinder/index.html [QSA,L]

        RewriteCond %{REQUEST_URI} !\.(.+)$
        RewriteRule manage/(.*?)/$ manage/index.php [QSA,L]

        RewriteCond %{REQUEST_URI} !\.(.+)$
        RewriteRule ajax/(.+?) ajax/index.php [QSA,L]

        RewriteCond %{REQUEST_URI} !\.(.+)$
        RewriteRule api/(.*?) /api/index.php [QSA,L]

        RewriteCond %{REQUEST_URI} !\.(.+)$
        RewriteRule (.*) index.php
</IfModule>

当我尝试访问例如 / manage / 时,它会向我显示索引页面,但是如果我要在路径中添加一些额外的数据,它将显示我需要的内容。例如: / manage / some_data - 工作正常。但我想通过 / manage / 访问正确的目录。

1 个答案:

答案 0 :(得分:2)

更改此规则:

RewriteCond %{REQUEST_URI} !\.(.+)$
RwriteRule manage/(.*?)/$ manage/index.php [QSA,L]

RewriteCond %{REQUEST_URI} !\.(.+)$
RwriteRule manage(/.*)?$ manage/index.php [QSA,L]