将所有.php流量重定向到.php5文件

时间:2009-02-09 21:04:28

标签: .htaccess mod-rewrite url-rewriting

我在共享主机上安装了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

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

5 个答案:

答案 0 :(得分:3)

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

我在以下web site中找到了这个可能有用的内容,您可以使其更具体,如果您愿意,可以删除仅更改一定数量的.php文件的邮件。

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

答案 1 :(得分:2)

我会更改主机,你不应该让php应用程序在扩展后声明它们的版本。它是PHP3的贫民窟和非常贫民窟和php5的不良做法。

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

我会在你前进的时候退出并跳上糟糕的主机 - 不要试图改变像mediawiki这样的应用程序是如何构建的。我见过的有php4和php5的主机允许你选择你想为域运行的安装 - 不用文件扩展名来指定它。那是贫民窟。

答案 2 :(得分:0)

试试这个

AddType x-mapp-php .php5

可能是另一种方式,尝试一下,我不能解释:S

答案 3 :(得分:0)

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

答案 4 :(得分:0)

这似乎对我有用:

AddType application / x-httpd-php5 .php