我正在开发一个 Concrete5 网站:
- Concrete5 是一个开源的 PHP CMS
- 它托管在我的 VPS 上(Debian 6、Apache 2.2.16 和 PHP 5.4)
- 这是开发网址:http ://www.test.mijn-teamuitje.nl/
- 它使用 Concrete5 生成的默认 .htaccess
我的问题与 .htaccess 规则有关,并且与此有关:mod_rewrite 'add path info postfix:'
这个问题会导致任何带有 index.php 和斜杠的 url 在我身上都变成 404。所以这行得通:http ://www.test.mijn-teamuitje.nl/teams 但这不是:http ://www.test.mijn-teamuitje.nl/index.php/teams
然而,我设法用一行来解决这个问题:RewriteRule ^index.php/(.*)$ index.php [L,DPI] in the .htaccess 所以现在它可以工作并且没有 404。
不幸的是,有一个缺点,这就是问题所在:任何映射到 Concrete5“工具”路径的 url 都需要大约 15 秒才能加载,我就是不知道为什么。这些工具 url 加载服务器输出的动态资源,如 html 或 javascript。一个例子是这个:http ://www.test.mijn-teamuitje.nl/index.php/tools/required/alert.php 。当您打开页面时,这些 url 会在后台使用脚本或链接元素调用。页面立即加载,但资源需要永远。
我知道这很复杂,但如果有人知道,只要看看我的重写规则,为什么这可能是一个问题,那么我很想听听。
这些是我的 .htaccess 重写规则:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php\/(.*)$ index.php [L,DPI]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php
</IfModule>
这是 Concrete5 的默认 htaccess,通常总是有效的。包含 DPI 标志的行是我添加的行。
从 mod_rewrite 日志来看,没有进行递归重定向。这些是 url http://www.test.mijn-teamuitje.nl/index.php/tools/required/alert.php的行
83.84.100.81 - - [16/Jul/2014:16:49:04 +0200] [www.test.mijn-teamuitje.nl/sid#7fe14d27a518][rid#7fe14d4f0b70/initial] (3) [perdir /var/www/nl.mijn-teamuitje-test/] add path info postfix: /var/www/nl.mijn-teamuitje-test/index.php -> /var/www/nl.mijn-teamuitje-test/index.php/tools/required/alert.php
83.84.100.81 - - [16/Jul/2014:16:49:04 +0200] [www.test.mijn-teamuitje.nl/sid#7fe14d27a518][rid#7fe14d4f0b70/initial] (3) [perdir /var/www/nl.mijn-teamuitje-test/] strip per-dir prefix: /var/www/nl.mijn-teamuitje-test/index.php/tools/required/alert.php -> index.php/tools/required/alert.php
83.84.100.81 - - [16/Jul/2014:16:49:04 +0200] [www.test.mijn-teamuitje.nl/sid#7fe14d27a518][rid#7fe14d4f0b70/initial] (3) [perdir /var/www/nl.mijn-teamuitje-test/] applying pattern '^index\\.php\\/(.*)$' to uri 'index.php/tools/required/alert.php'
83.84.100.81 - - [16/Jul/2014:16:49:04 +0200] [www.test.mijn-teamuitje.nl/sid#7fe14d27a518][rid#7fe14d4f0b70/initial] (2) [perdir /var/www/nl.mijn-teamuitje-test/] rewrite 'index.php/tools/required/alert.php' -> 'index.php'
83.84.100.81 - - [16/Jul/2014:16:49:04 +0200] [www.test.mijn-teamuitje.nl/sid#7fe14d27a518][rid#7fe14d4f0b70/initial] (3) [perdir /var/www/nl.mijn-teamuitje-test/] add per-dir prefix: index.php -> /var/www/nl.mijn-teamuitje-test/index.php
83.84.100.81 - - [16/Jul/2014:16:49:04 +0200] [www.test.mijn-teamuitje.nl/sid#7fe14d27a518][rid#7fe14d4f0b70/initial] (1) [perdir /var/www/nl.mijn-teamuitje-test/] initial URL equal rewritten URL: /var/www/nl.mijn-teamuitje-test/index.php [IGNORING REWRITE]
任何帮助将不胜感激,我现在整天都在做这个!