Apache mod_rewriting没有找到任何文件

时间:2011-07-25 11:25:58

标签: apache mod-rewrite

好的,所以我们有一组特定的重写,由于编程的文件结构,我们在许多站点上使用这些重写。直到现在它才成为一个问题。

例如,重写:

RewriteRule ^$ Pages/news.php 

而不是指向http://www.domain.com/wedding-venues-and-caterers-news/Pages/news.php,而是重定向到/path/to/file/public/wedding-venues-and-caterers-news/Pages/news.php,它是404-ing(/path/to/file是实际路径)。

如果有人能说清楚为什么会发生这种情况,或者指出我正确的方向,那么我会永远感激。

我正在子文件夹中运行我的所有脚本和文件,根文件夹中有另一个.htaccess文件,我在底部编辑过,但它似乎没有任何可能干扰的内容。

如果您需要有关服务器的更多信息,请告诉我们!


编辑 - 以下是我要求的所有重写。

Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteRule ^$ Pages/news.php  
RewriteRule ^images/([0-9]+)/([0-9]+)/(0|1)/(.*).jpg?$ Classes/Image/timthumb.php?src=http://www.domain.com/wedding-venues-and-caterers-news/images/$4.jpg&h=$1&w=$2&zc=$3
RewriteRule ^([A-Za-z0-9\-]+)/([0-9]+)/([0-9]+)(/)?$ Pages/archives.php?cat_id=$2&page=$3 [NC,L]
RewriteRule ^archives/mon/([0-9]+)/yr/([0-9]+)/([0-9]+)$ Pages/archives.php?mon=$1&yr=$2&page=$3 [NC,L]
RewriteRule ^([A-Za-z0-9\-]+)/([0-9]+)(/)?$ Pages/archives.php?cat_id=$2 [NC,L] 
RewriteRule ^archives/mon/([0-9]+)/yr/([0-9]+)(/)?$ Pages/archives.php?mon=$1&yr=$2 [NC,L]
RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/([0-9]+)(/)?$ Pages/article.php?art_id=$3 [NC,L]
RewriteRule ^wedding-venues-catering-rss(/)?$ rss/rss.php [NC,L]
RewriteRule ^Page-Error(/)?$ Pages/errorPage.php [NC,L]
ErrorDocument 404 http://www.domain.com/wedding-venues-and-caterers-news/Page-Error
ErrorDocument 401 http://www.domain.com/wedding-venues-and-caterers-news/Page-Error
ErrorDocument 403 http://www.domain.com/wedding-venues-and-caterers-news/Page-Error
ErrorDocument 404 http://www.domain.com/wedding-venues-and-caterers-news/Page-Error
ErrorDocument 500 http://www.domain.com/wedding-venues-and-caterers-news/Page-Error

我还尝试用绝对URL引用重写,当然这很有效,但它们只是重定向而不是像你期望的那样重写。


编辑 - 这是根目录中的另一个.htaccess文件,它是现有站点的一部分。

#Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc] 

<IfModule mod_rewrite.c>
RewriteEngine on
redirect 301 /Cavendish.htm http://www.domain.com/
redirect 301 /grange.htm http://www.domain.com/
redirect 301 /restaurant/index.html http://www.domain.com/
redirect 301 /news/Save-money-by-booking-wedding-venues-in-Middlesex-at-off-peak-times.asp http://www.domain.com/
redirect 301 /news/default.asp http://www.domain.com/


编辑 - 我认为这可能是相关的。

重写时出现404错误显示此路径 -

 /l/i/domain.com/public/wedding-venues-and-caterers-news/Pages/news.php

但..如果我编辑news.php并请求SCRIPT_FILENAME,它会给我路径..

 /services/webpages/l/i/domain.com/public/wedding-venues-and-caterers-news/Pages/news.php

我的猜测是有些东西正在影响默认路径。

此外,我尝试过根级别的基本重写,但这些也是404。

1 个答案:

答案 0 :(得分:0)

最后问题已经解决了。

由于服务器托管了BT Business,我决定给他们发电子邮件,看看他们是否可以提供帮助。

一个家伙回复称他已登录服务器并修改了.htaccess,现在工作正常。

他只是在重写的URL的前面添加了子文件夹。

IE: -

RewriteRule ^$ Pages/news.php  

成为: -

RewriteRule ^$ wedding-venues-and-caterers-news/Pages/news.php

当.htaccess文件在该目录中时,我仍然不确定为什么需要子目录,我的猜测是它与它们的服务器设置有关。