好的,所以我们有一组特定的重写,由于编程的文件结构,我们在许多站点上使用这些重写。直到现在它才成为一个问题。
例如,重写:
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。
答案 0 :(得分:0)
最后问题已经解决了。
由于服务器托管了BT Business,我决定给他们发电子邮件,看看他们是否可以提供帮助。
一个家伙回复称他已登录服务器并修改了.htaccess,现在工作正常。
他只是在重写的URL的前面添加了子文件夹。
IE: -
RewriteRule ^$ Pages/news.php
成为: -
RewriteRule ^$ wedding-venues-and-caterers-news/Pages/news.php
当.htaccess文件在该目录中时,我仍然不确定为什么需要子目录,我的猜测是它与它们的服务器设置有关。