使用 CodeIgniter 应用程序和 traq 问题跟踪器在网站上配置 .htaccess

使用 CodeIgniter 应用程序和 traq 问题跟踪器在网站上配置 .htaccess

我已经在 CodeIgniter 上运行此网站,并且安装了交通用于问题跟踪。下面public_html有我的应用程序和系统目录以及资产目录,还有 traq。即:

public_html
  ├── application
  ├── assets
  ├── system
  └── traq

当我访问时,我的页面以及 traq 的第一个登录屏幕均正常运行http://mywebpage.com/traq。当我访问 traq 中的任何其他页面时,它不起作用,它会重定向到 codeigniter 并给我 404。例如,当我登录时,它会尝试转到http://mywebpage.com/traq/login并失败并出现 404。

这是我的.htaccess文件。有人能修复它吗,或者至少给我指明正确的方向?

<IfModule mod_rewrite.c>
    RewriteEngine On
    #RewriteBase /

    RewriteCond %{REQUEST_URI} ^ci_app.*
    RewriteRule ^(.*)$ index.php?/$1 [L]

    RewriteCond %{REQUEST_URI} ^traq.*
    RewriteRule ^traq(.*)$ traq/index.php/$1 [L]


    RewriteCond $1 !^(index\.php|humans\.txt|robots\.txt|assets|traq)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule>

答案1

RewriteCond %{REQUEST_URI} ^traq.*
RewriteRule ^traq(.*)$ traq/index.php/$1 [L]

由于您使用的是“行首”锚点 (^),因此请求条件应包含绝对位置!^traq 不会匹配 /traq,而 ^/traq 会匹配。只要您使用 ^ 锚点,即可修复此问题,一切顺利。

相关内容