htaccess的作品本地服务器上没有主服务器上 [英] .htaccess works on local server not on main server

查看:172
本文介绍了htaccess的作品本地服务器上没有主服务器上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下的.htaccess文件工作的本地MAMP服务器的罚款。然而,当我把它上传到主服务器时,它无法找到的新闻网页。

  RewriteEngine叙述上
的RewriteBase /

的RewriteCond%{THE_REQUEST} \ S / +新闻\ .PHP \ news_id =([^ \ S&安培] +)?[NC]
重写规则^ /新闻/%1? [R = 301,L]

的RewriteCond%{} THE_REQUEST \s/+Category\.php\?pageNum_RS_Search=([^\s&]+)&totalRows_RS_Search=([^\s&]+)&Category=([^\s&]+) [NC]
重写规则^ /比较/%1/2%/ 3%? [R = 301,L]

的RewriteCond%{THE_REQUEST} \ S / +分类\ .PHP \类别=([^ \ S&安培] +)?[NC]
重写规则^ /比较/%1? [R = 301,L]

的RewriteCond%{THE_REQUEST} \ S / +产品\ .PHP \ ID =([^ \ S&安培] +)?[NC]
重写规则^%1? [R = 301,L]

的RewriteCond%{} REQUEST_FILENAME!-d
的RewriteCond%{} REQUEST_FILENAME!-f
重写规则^([^ /] +)?$ product.php?ID = $ 1 [L,QSA]

的RewriteCond%{} REQUEST_FILENAME!-d
的RewriteCond%{} REQUEST_FILENAME!-f
重写规则^比较/([^ /] +)/ $ Category.php?类别= $ 1 [L,QSA]

的RewriteCond%{} REQUEST_FILENAME!-d
的RewriteCond%{} REQUEST_FILENAME!-f
重写规则^比较/([^ /] +)/([^ /] +)/([^ /] +)/ $ Category.php pageNum_RS_Search = $ 1和;?2 totalRows_RS_Search = $&安培;类别= $ 3 [L, QSA]

的RewriteCond%{} REQUEST_FILENAME!-d
的RewriteCond%{} REQUEST_FILENAME!-f
重写规则^新闻/([^ /] +)/ $ news.php?news_id = $ 1 [L,QSA]
 

该类别和产品重定向做工精细的主服务器上,不过消息并没有给出一个404错误

其他重写规则上一级

  RewriteEngine叙述上
的RewriteCond%{HTTP_HOST} ^ www.mysite1.co.uk $ [OR]
的RewriteCond%{HTTP_HOST} ^ mysite1.co.uk $
(。*)重写规则^ $HTTP \:\ / \ / mysite的\ .CO \ .UK \ / $ 1[R = 301,L]#5311a623b538f
的RewriteCond%{HTTP_HOST} ^ www.mysite.co.uk $ [OR]
的RewriteCond%{HTTP_HOST} ^ mysite.co.uk $
重写规则^ Pianoshop \ / detailed_pa​​ge \ .PHP $(*)的http \:\ / \ / mysite的\ .CO \ .UK \ /产品\的.php $ 1[R = 301,L]#5310700a7e477
的RewriteCond%{HTTP_HOST} ^ www.mysite.co.uk $ [OR]
的RewriteCond%{HTTP_HOST} ^ mysite.co.uk $
重写规则^ Pianoshop \ / index_blog \的.php $HTTP \:\ / \ / mysite的\ .CO \ .UK \ /新闻\ .PHP $ 1(*)[R = 301,L]#531
 

解决方案

我怀疑这是发生由于多视​​图你以`mod_rewrite的冲突现场服务器上启用选项。

添加此行对你的.htaccess的顶部来禁用它:

 选项-MultiViews
 

I have the following .htaccess file working on the local MAMP server fine. However when I upload it to the main server it can't find the news page.

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} \s/+news\.php\?news_id=([^\s&]+) [NC]
RewriteRule ^ /news/%1? [R=301,L]

RewriteCond %{THE_REQUEST} \s/+Category\.php\?pageNum_RS_Search=([^\s&]+)&totalRows_RS_Search=([^\s&]+)&Category=([^\s&]+) [NC]
RewriteRule ^ /Compare/%1/%2/%3? [R=301,L]

RewriteCond %{THE_REQUEST} \s/+Category\.php\?Category=([^\s&]+) [NC]
RewriteRule ^ /Compare/%1? [R=301,L]

RewriteCond %{THE_REQUEST} \s/+product\.php\?id=([^\s&]+) [NC]
RewriteRule ^ %1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)?$ product.php?id=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^Compare/([^/]+)/?$ Category.php?Category=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^Compare/([^/]+)/([^/]+)/([^/]+)/?$ Category.php?pageNum_RS_Search=$1&totalRows_RS_Search=$2&Category=$3 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^news/([^/]+)/?$ news.php?news_id=$1 [L,QSA]

The Category and product redirects work fine on the main server however the news doesn't gives a 404 error

other rewrite rules one level higher

rewriteengine on
rewritecond %{HTTP_HOST} ^www.mysite1.co.uk$ [OR]
rewritecond %{HTTP_HOST} ^mysite1.co.uk$
rewriterule ^(.*)$ "http\:\/\/mysite\.co\.uk\/$1" [R=301,L] #5311a623b538f
rewritecond %{HTTP_HOST} ^www.mysite.co.uk$ [OR]
rewritecond %{HTTP_HOST} ^mysite.co.uk$
rewriterule ^Pianoshop\/detailed_page\.php(.*)$ "http\:\/\/mysite\.co\.uk\/product\.php$1" [R=301,L] #5310700a7e477
rewritecond %{HTTP_HOST} ^www.mysite.co.uk$ [OR]
rewritecond %{HTTP_HOST} ^mysite.co.uk$
rewriterule ^Pianoshop\/index_blog\.php(.*)$ "http\:\/\/mysite\.co\.uk\/news\.php$1" [R=301,L] #531

解决方案

I suspect this is happening due to MultiViews option enabled on your live server which conflicts with `mod_rewrite.

Add this line on top of your .htaccess to disable it:

Options -MultiViews

这篇关于htaccess的作品本地服务器上没有主服务器上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆