我的htaccess中有以下规则:
RewriteRule ^([^/.]+)/?$ list.php?categoryShortForm=$1&locationShortForm=world [QSA]
RewriteRule ^([^/.]+)/([^/.]+)/?$ list.php?categoryShortForm=$1&locationShortForm=$2 [QSA]
RewriteRule ^([^/.]+)/([^/.]+)/[^/.]*-p([0-9]+)/?$ view.php?categoryShortForm=$1&locationShortForm=$2&postingId=$3 [QSA]
在我的localhost(windows,xampp)中,一切正常。 在我的真实服务器(linux,apache)中,前两个规则工作正常,但不是第三个规则。
例如:
/plastic-surgery/california-usa/
工作正常,但是
/plastic-surgery/los-angeles-california-usa/test-1-p1
给了我一个404
任何想法??
答案 0 :(得分:1)
检查以确保您可以直接浏览目标网址。如果mod_rewrite重写到不存在的东西上,你就会得到404.这可能有助于将mod_rewrite的日志级别提升到一个很高的值,这样你就可以看到它重写的内容了。
答案 1 :(得分:0)
我对你的工作网址实际工作方式有点不清楚。你的所有三个模式都以“一个或多个非斜杠,非周期性字符”([^ /。] +)开头,但进入模式匹配的URL以斜杠开头:“/ plastic-surgery / california-usa / ”
您是否打开了mod_rewrite记录并检查了mod_rewrite实际上在做什么?
RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 9