.htaccess mod_rewrite刚刚破坏了网站

时间:2010-03-10 18:19:49

标签: apache .htaccess mod-rewrite

在以下.htaccess文件中......


RewriteEngine on
RewriteCond %{HTTP_HOST} ^getpearson.com$
RewriteRule ^/?$ "http\:\/\/www\.getpearson\.com" [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^redesign_03012010/mock-up/([^/]+)/([^/]+)$ /redesign_03012010/mock-up/index.php?page=$1§ion=$2 [PT]
RewriteRule ^redesign_03012010/mock-up/([^/]+)$ /redesign_03012010/mock-up/index.php?page=$1 [PT]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)$ /index.php?test=1&page=$1§ion=$2
RewriteRule ^([^/]+)$ /index.php?test=1&page=$1 [L]

我删除后修改了最后3行:


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)$ /index.php?test=1&page=$1§ion=$2
RewriteRule ^([^/]+)$ /index.php?test=1&page=$1 [L]

为:


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)$ /index.php?page=$1§ion=$2
RewriteRule ^([^/]+)$ /index.php?page=$1 [L]

...因此只删除'test = 1&' url变量,现在它没有werkie ...这个疯狂的htaccess术语的逻辑是什么?它让我很难过。无论如何,我做了一个PHP解决方案,直到我能想到这一点,所以没有后顾之忧,但请帮忙!谢谢!

3 个答案:

答案 0 :(得分:2)

“没有werkie”有点模糊......你对规则的编辑似乎很好。也许index.php页面期望“test”变量存在并且如果不存在则会崩溃?

不要从查询字符串中删除“test”变量,而是尝试将“test = 1”更改为“test = 0”。

答案 1 :(得分:0)

卢卡斯 我认为你最后两条规则在模式之前缺少了/。并且取出[PT]在这种情况下它是不合适的。

RewriteRule ^/([^/]+)/([^/]+)$ /index.php?test=1&page=$1&section=$2
RewriteRule ^/([^/]+)$ /index.php?test=1&page=$1 [L]

汤姆

答案 2 :(得分:0)

您的index.php文件中存在问题,而不是.htaccess。如果您直接访问index.php而没有test=1而不是通过重写的网址,会发生什么?我怀疑它被配置为在这种情况下抛出500错误。