Apache .htaccess中的mod_重写规则

Apache .htaccess中的mod_重写规则,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我有一个链接 http://example.com/fightblog/home/heading.php?id=15&title=whatever 使用此规则后 Options -MultiViews RewriteEngine On RewriteBase /fightblog/home/ RewriteCond %{THE_REQUEST} /heading\.php\?id=([^\s&]+)&title=([^\s&]+) [NC] RewriteRu

我有一个链接

http://example.com/fightblog/home/heading.php?id=15&title=whatever
使用此规则后

Options -MultiViews
RewriteEngine On
RewriteBase /fightblog/home/

RewriteCond %{THE_REQUEST} /heading\.php\?id=([^\s&]+)&title=([^\s&]+) [NC]
RewriteRule ^ %1/%2? [R=302,L,NE]

RewriteRule ^(\w+)/(\d+)/?$ heading.php?id=$1&title=$2 [L,QSA,NC]
我可以重定向到

http://example.com/fightblog/home/15/whatever
这是正确的。但我的问题是,它给出的错误是404。找不到页面


如何解决此错误?我还希望重定向后$\u GET['id']中的id值

将重写规则更改为:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w.-]+)/([\w.-]+)/?$ heading.php?id=$1&title=$2 [L,QSA,NC]

所以这两个参数都接受单词字符或连字符。

这很奇怪,因为相同的规则在我的Apache上运行良好。请确保在此之前没有任何其他规则,只有重定向规则。没有其他规则。您可以假设标题为“ICC-champions-trophy-final-2017-印度对巴基斯坦”。这个档案放在哪里?在fightblog目录或主目录中?从标题中删除“.”后,它在主目录下工作。你可以在标题中看到2017年和印度之间的点,但css和js文件未加载。是的,这很完美。谢谢