我有一个带有标准ExpressionEngine htaccess代码的MT站点,用于删除index.php并且主页可以工作,如果我将index.php放在URL中,所有其他页面都可以工作。没有它,我得到“没有指定输出文件”。它适用于我的本地和非MT服务器,所以我知道它是一个环境的东西。需要更改htaccess中的哪些内容才能使其在MT上运行?
<IfModule mod_rewrite.c>
# Enable Rewrite Engine
# ------------------------------
RewriteEngine On
RewriteBase /
# Use Dynamic robots.txt file
# ------------------------------
RewriteRule robots\.txt /robots.php [L]
# Redirect index.php Requests
# ------------------------------
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{THE_REQUEST} !/admin/.*
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]
# Standard ExpressionEngine Rewrite
# ------------------------------
RewriteCond $1 !\.(css|js|gif|jpe?g|png) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
</IfModule>
答案 0 :(得分:7)
感谢@danielcgold通过twitter获得答案:
尝试使用此行RewriteRule ^(.*)$ /index.php?/$1 [L]
并注意?在index.php之后
答案 1 :(得分:5)
昨晚我在(mt)的所有ExpressionEngine网站上发布了我的标准重写规则。
## BEGIN Expression Engine Rewrite
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteRule ^(.*)$ /index.php?/$1 [L]
## END Expression Engine Rewrite
答案 2 :(得分:0)
使用EE 2.7.0和Mediatemple的网格服务(以前称为“GS”),我很幸运使用标准.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
# Removes index.php from ExpressionEngine URLs
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
然后进入AccountCenter&gt; [mydomain.com]&gt; PHP设置,并将PHP版本从 5.5.1 CGI(最新)更改为 5.3.7 CGI(稳定)。
答案 3 :(得分:0)
我在ExpressionEngine Stack Exchange网站上发布了this solution,但简而言之,我们必须使用的共享托管环境被迫使用FastCGI,我们无法修改任何CGI或PHP配置。
为了尝试自己创建$_SERVER['PATH_INFO']
变量,对我来说有用的是这个3步“自定义”方法:
ExpressionEngine > CP Home > Admin > System Administration > Output And Debugging
中,我将强制网址查询字符串设置为否。.htaccess
指令从RewriteRule ^(.*)$ /index.php/$1 [L,QSA]
更改为 RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]
(在index.php之后的额外?)最后,我将这段自定义PHP代码添加到站点根目录index.php
文件的顶部,以“强制”$_SERVER['PATH_INFO']
变量准确存在:
<?php
$path = $_SERVER['REQUEST_URI'];
$pos = strpos($path, '?');
if ($pos !== false)
$path = substr($path, 0, $pos);
$_SERVER['PATH_INFO'] = $path;
/**
* ExpressionEngine - by EllisLab
...
...
我希望这有助于某人!我真的把头发拉出来试图找到更优雅的解决方案!