我正在按照书籍教程(Larry Ullman的Effortless Ecommerce)来建立一个电子商务网站。当我将以下代码添加到我的htaccess文件中以重写URL并强制执行SSL时,当我尝试加载我的网站时,它会返回500错误。
有没有人知道问题/解决方案可能是什么?
RewriteEngine on
# For sales:
RewriteRule ^shop/sales/?$ sales.php
# For the primary categories:
RewriteRule ^shop/([A-Za-z\ ] )/?$ shop.php?type=$1
# For specific products:
RewriteRule ^browse/([A-Za-z\ \-] )/([A-Za-z\ \-] )/([0-9] )$ browse.php?type=$1&category=$2&id=$3
# For HTTPS pages:
RewriteCond %{HTTPS} off
RewriteRule ^(checkout\.php|billing\.php|final\.php|admin/(.*))$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} off RewriteRule ^(checkout\.php|billing\.php|final\.php|admin/(.*))$ https://%{HTTP_HOST}/$1 [R=301,L]
答案 0 :(得分:1)
.htaccess中存在一些轻微的语法错误。我修好了,请试试这个:
Options +FollowSymlinks -MultiViews
RewriteEngine on
# For sales:
RewriteRule ^shop/sales/?$ sales.php [L,NC]
# For the primary categories:
RewriteRule ^shop/([^/]*)/?$ shop.php?type=$1 [L,NC]
# For specific products:
RewriteRule ^browse/([^/]*)/([^/]*)/([0-9])/?$ browse.php?type=$1&category=$2&id=$3 [L,NC]
# For HTTPS pages:
RewriteCond %{HTTPS} off
RewriteRule ^(checkout\.php|billing\.php|final\.php|admin/(.*))$ https://%{HTTP_HOST}/$1 [R=301,L,NC]
答案 1 :(得分:0)
您的Apache配置中是否启用了Mod_Rewrite?某些提供商不会在共享主机上激活它。
答案 2 :(得分:0)
我认为问题是@ sparky672在评论中提出的问题,即我是在复制和粘贴,也许是看不见的隐形人物
我现在就开始工作了
<IfModule mod_rewrite.c>
RewriteEngine on
# For sales:
RewriteRule ^shop/sales/?$ sales.php
# For the primary categories:
RewriteRule ^shop/([A-Za-z\+]+)/?$ shop.php?type=$1
# For specific products:
RewriteRule ^browse/([A-Za-z\+\-]+)/([A-Za-z\+\-]+)/([0-9]+)$ browse.php?type=$1&category=$2&id=$3
# For HTTPS pages:
RewriteCond %{HTTPS} off
RewriteRule ^(checkout\.php|billing\.php|final\.php|admin/(.*))$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
答案 3 :(得分:0)
你在哪里复制&amp;粘贴它?
如果你将它从网页上拉下来,那么你就会引入各种不可见的角色。如果你正在使用MS Word,那么你也会引入无关的隐形。
尝试使用优秀的文本编辑器,检查隐形垃圾并从那里复制/粘贴。或者只需将其全部输入控制面板编辑器即可。
就个人而言,我使用一个好的文本编辑器并通过FTP上传(确保它是ASCII文本模式)。