满足条件时设置重写规则

时间:2019-06-20 16:26:23

标签: php .htaccess

资深程序员

这是我第一次使用htaccess进行重写,但我找不到解决问题的方法。

我创建了一个简单的重写规则,以使用php GET变量将用户重定向到更干净的网址。

这是代码

RewriteEngine on
RewriteRule ^page/([0-9a-zA-Z]+)/([0-9a-zA-Z]+) index.php?dir=$1&admin=$2 [NC,L]
ErrorDocument 404 /page/404

目前,除非同时设置了两个参数,否则本示例将不起作用。如果我想参观 mysite.com/page/dashboard 然后将我重定向到404,但是如果添加 mysite.com/page/dashboard/random 然后我得到我的仪表板

如果仅设置了dir并且同时设置了dir和

,则我需要它同时起作用

我还可以删除/ page /目录,而不会弄乱我的样式,脚本等吗?每当我删除/ page /并将其保留为mysite.com/时,我的样式和脚本就会停止工作,因为我想这是希望这些参数能够得到满足。

我知道这听起来可能有些混乱,但是希望有人可以帮助我完成这项工作。

1 个答案:

答案 0 :(得分:0)

所以我解决了这个问题,似乎是因为我没有检查url末尾是否有斜杠,所以我添加了这个问题。

RewriteEngine on
RewriteRule ^([a-zA-Z0-9]+)$ index.php?dir=$1
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?dir=$1&admin=$2
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ index.php?dir=$1&admin=$2
ErrorDocument 404 /page/404

请注意重复的条目。

我还在末尾添加了$符号,以便apache不会再有其他任何重定向或参数。