mod-rewrite无法在实时服务器上运行

时间:2012-03-28 23:50:08

标签: apache .htaccess mod-rewrite url-rewriting

我有一个简单的RewriteRule,它在我的本地机器上工作正常但是当我上传到我的实时服务器时它不起作用。

错误:

  

未找到请求的URL   /redirect:/jobs.php/1/field-engineer.php/1/field-engineer.php不是   在这台服务器上找到。

     

此外,尝试时遇到404 Not Found错误   使用ErrorDocument来处理请求。

htaccess的:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)\.htm $1.php [NC]
RewriteRule jobs/([0-9]+)/(.*)/ jobs.php?id=$1 [NC]
RewriteRule testimonial-details/([0-9]+)/(.*)/ testimonial-details.php?id=$1 [NC]
RewriteRule testimonials/([0-9]+)/(.*)/ testimonials.php?id=$1 [NC]

任何帮助都将很高兴。

1 个答案:

答案 0 :(得分:-1)

您是否检查过您的重写模块是否已加载? 顺便问一下,你应该在你的htaccess中查看它:

<IfModule mod_rewrite.c>
// your rewrite stuff here
</IfModule>

编辑:

也许这可能会有所帮助。尝试将PT标志设置为您的第一个重写规则

RewriteRule ^(.*)\.htm $1.php [NC,PT]

这将告诉引擎在生成的URL上创建一个干净的第二条路径。因为根据你的规则存在一种奇怪的行为。

网址

jobs/1/civil-engineer.html被重写为jobs/1/civil-engineer.php

但是以下规则

jobs/([0-9]+)/(.*)/正在等待jobs/1/civil-engineer.php/

等网址

我做了一些测试,但删除了&#39; /&#39;只避免某些错误,但行为仍然很奇怪。我找到的唯一方法是添加PT标志或更改

的规则

RewriteRule jobs/([0-9]+)/(.*)\?php jobs.php?id=$1