Apache mod_重写找不到任何文件

Apache mod_重写找不到任何文件,apache,mod-rewrite,Apache,Mod Rewrite,好的,由于我们编程的文件结构,我们在许多站点上使用了一组特定的重写。到现在为止,这从来都不是个问题 例如,重写: RewriteRule ^$ Pages/news.php 而不是指向http://www.domain.com/wedding-venues-and-caterers-news/Pages/news.php它正在重定向到/path/to/file/public/wedding invoinces and caterers news/Pages/news.php并且它是404-i

好的,由于我们编程的文件结构,我们在许多站点上使用了一组特定的重写。到现在为止,这从来都不是个问题

例如,重写:

RewriteRule ^$ Pages/news.php 
而不是指向
http://www.domain.com/wedding-venues-and-caterers-news/Pages/news.php
它正在重定向到
/path/to/file/public/wedding invoinces 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/
但是。。如果我编辑news.php并请求SCRIPT_FILENAME,它会给出路径

 /services/webpages/l/i/domain.com/public/wedding-venues-and-caterers-news/Pages/news.php
我的猜测是有什么东西正在影响默认路径


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

问题终于解决了

由于服务器由BT Business托管,我决定向他们发送电子邮件,看看他们是否能提供帮助

一个人回复说他已经登录到服务器并修改了.htaccess,现在可以正常工作了

他只是简单地将子文件夹添加到重写的URL前面

即:-

成为:-

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

我仍然不确定当.htaccess文件位于该目录中时为什么需要该子目录,我猜这与他们的服务器设置有关

你能告诉我们原始的请求URI是什么吗,并发布你的其他规则吗?是我正在请求的URI,从技术上讲,它应该重写为/Pages/news.php。另外,还需要提到的是,所有文件,包括.htaccess,都在/news子文件夹中。@Danny最好用htaccess重写规则更新你的问题并删除评论——更容易阅读=更感兴趣的帮助:)@LazyOne,谢谢你的提示,现在全部完成:)
RewriteRule ^$ Pages/news.php  
RewriteRule ^$ wedding-venues-and-caterers-news/Pages/news.php