2009-02-09 59 views
1

我有一个在共享主机上安装MediaWiki的个人网站。 Apache配置使用PHP 4处理所有.php请求,使用PHP5处理所有.php5请求。将所有.php流量重定向到.php5文件

为了兼容性的原因,我需要能够使用.php扩展名,但MediaWiki只能在PHP5上使用。我试图使用mod_rewrite引擎,但我坚持规则。

下面是当前文件:

DirectoryIndex index.php5 

RewriteEngine on 


# This rewrites URIs in the form /pages/Article_Name to /index.php5?title=Article_Name. 
RewriteCond %{REQUEST_URI} !^/pages/index.php5.*$ [NC] 
    RewriteRule ^pages/?(.*)$ /index.php5?title=$1 [L] 

# This is the broken rule 
RewriteCond %{REQUEST_URI} ^index\.php(([^5])(.*))?$ [NC] 
    RewriteRule ^index\.php(([^5])(.*))?$ /index.php5?$1 [L] 

规则的想法是“重定向从index.php文件的所有内容(后面没有‘5’)index.php5”。

有什么想法?


编辑:

SetEnv PHP_VER 5 

的作品,但我仍然有兴趣的原因的规则是没有考虑到。

回答

3
RewriteEngine On 
RewriteBase/
RewriteRule ^(.*)\.php $1.php5 [R=301,L] 
RewriteRule ^(.*)\.php $1.php5 [L] 

我发现这个以下web site这可能是有用的,你可以使它更加具体和删除包罗万象,如果你喜欢只改变一定数量的.php文件。

您也可以使用RewriteBase条件对其进行自定义以仅适用于特定的目录。

0

试试这个

AddType x-mapp-php .php5 

这可能是周围的其他方式,尝试它虽然,我不能大气压:S

+0

不错的尝试,但它似乎工作(可能在服务器上被禁用) – Luk 2009-02-09 21:12:19

+0

按理说不,我是一个完整的Apache noob,所以我可能做错了。我将它添加到DirectoryIndex行下面,并尝试使用和不使用我的规则。 – Luk 2009-02-09 21:14:09

2

我会改变主机,你不应该有PHP应用程序说出自己扩展后的版本。这是贫民窟与PHP3和非常贫民窟和不好的做法为php5。

当然,这可能是不好的做法,你很可能永远不会看到围绕php5文件扩展命名约定建立的OSS应用程序。

我会退出,而你提前并跳到一个不良的主机上运行 - 不要试图改变像mediawiki这样的应用程序的运行方式。我见过的主机同时拥有php4和php5,允许您选择要为域运行的安装 - 不能用文件扩展名指定它。那是贫民窟。

0

REQUEST_URI值始终以斜杠开始,但您的模式不会。

0

这似乎为我工作:

将AddType应用/的X的httpd-php5的.PHP