最近我设置了这条规则,将我的root托管目录重定向到 / test 子目录
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.net$ [NC]
RewriteRule ^((?!test/).*)$ test/$1 [L,NC]
工作正常......
所以在那个/ test子目录中,我有一个文件' jokes.php'这些不友好的URL
//Jokes mainpage
www.mydomain.net/jokes.php
//Drunk jokes category
www.mydomain.net/jokes.php?c=drunks
//See 'On the bar' joke - this is how i identify on my DB
www.mydomain.net/jokes.php?c=drunks&id=on_the_bar
上面的网址工作正常...所以我想使用这样的友情网址:
// Individual -> mydomain.net/jokes-drunks/on-the-bar/
RewriteRule ^jokes-(.*)/([a-zA-Z0-9-]*)/$ jokes.php?c=$1&id=$2
// Category -> mydomain.net/jokes-drunks/
RewriteRule ^jokes-([a-zA-Z_]+)/$ jokes.php?c=$1
// Main -> mydomain.net/jokes/
RewriteRule ^jokes/ jokes.php
但我总是得到404错误。重写规则适用于Localhost,相同的站点结构/ root / site ... 我必须提到我的localhost .htaccess 文件位于/ test子目录中,但是mydomain.net位于根目录中,因为它适用于第一个重定向规则...当然我的网站位于/ test subdir也是......
我已经尝试在/ test子目录中使用另一个.htaccess文件,但我认为Root .htaccess会覆盖子目录.htaccess或其他...
我正在学习,请耐心等待:)提前感谢
答案 0 :(得分:0)
尝试在规则中添加标志:
RewriteRule ^jokes-([^/]+)/([a-zA-Z0-9-]*)/?$ jokes.php?c=$1&id=$2 [QSA,NC,L]
RewriteRule ^jokes-([a-zA-Z_]+)/?$ jokes.php?c=$1 [QSA,NC,L]
RewriteRule ^jokes/?$ jokes.php [NC,L]