由于配置,RewriteRule不能在所有服务器上运行?

时间:2011-11-15 21:18:41

标签: php .htaccess

在名为重写的文件夹中,我有两个文件, .htaccess index.php

<rewrite>
- .htaccess
- index.php

.htaccess 我有这个内容

RewriteEngine On
RewriteRule ^([a-z0-9]+)?$ index.php?id=$1 [NC,L]

index.php

<?php
echo $_GET['id'];
?>

当我访问 www.domain.com/rewrite/1234时不应该我会得到 1234 的输出?
除此之外,还创建了一个文件 application / x-httpd-php 供下载,其中包含 index.php

的代码

我想弄清楚为什么我不能做到这一点。我在这里缺少什么?

更新
我测试了两个Web服务器和本地服务器。最后,它在其中一个Web服务器上运行,这意味着它与配置有关。

我该怎么办呢?

1 个答案:

答案 0 :(得分:1)

您的某个服务器可能未激活mod_rewrite

确保进行测试:

在一个文件夹中制作两个文件: - .htaccess - rewrite.php

.htacces put:

RewriteEngine On
RewriteRule ^link([^/]*).html$ rewrite.php?link=$1 [L]

并在rewrite.php放置:

<h2 align=center>
<?
if(isset($_GET['link']))
{
    if($_GET['link']==1){echo "Link without use mod_rewrite";}
    elseif($_GET['link']==2){echo "Congratulations!! You has used Apache's mod_rewrite and works well.";}
    else{ echo "Verify the Apache's module mod_rewrite.";}
}
?>
</h2>
<hr>
<head>
<title>Test mod_rewrite in Apache Linux</title>
</head>
<body>
<h1>Test mod_rewrite in Apache Linux</h1>
<p><a href="rewrite.php?link=1">Link one </a> = rewrite.php?link=1</p>
<p><a href="link2.html">Link two</a> = link2.html</p>
<ul>
<li>Test link one</li>
<li>Then test the link two</li>
<li>If with the link two if the link two goes to a not found page then you have not activated the .htaccess or apache mod_rewrite is not working.</li>
</ul>
</body>
</html>