1

我有一个在共享主机上安装了 MediaWiki 的个人网站。Apache 配置使用 PHP 4 处理所有 .php 请求,使用 PHP5 处理所有 .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

有效,但我仍然对为什么没有考虑该规则感兴趣。

4

5 回答 5

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

我在以下网站上发现这可能有用,如果您愿意,您可以使其更具体并删除全部内容以仅更改一定数量的 .php 文件。

您还可以使用 RewriteBase 条件对其进行自定义以仅适合某个目录。

于 2009-02-09T22:03:51.217 回答
2

我会更改主机,您不必让 php 应用程序在扩展后声明其版本。PHP3 是贫民区,php5 是非常贫民窟和不好的做法。

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

我会在你领先时退出并跳槽到一个糟糕的主机上 - 不要尝试改变像 mediawiki 这样的应用程序的构建方式。我见过的同时具有 php4 和 php5 的主机允许您选择要为该域运行的安装 - 而不是用文件扩展名指定它。那是贫民区。

于 2009-02-09T21:14:22.367 回答
0

试试这个

AddType x-mapp-php .php5

可能是相反的方式,但尝试一下,我无法自动取款:S

于 2009-02-09T21:07:28.700 回答
0

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

于 2009-02-09T23:16:07.300 回答
0

这似乎对我有用:

AddType application/x-httpd-php5 .php

于 2009-04-02T19:02:33.707 回答