我有四个要重写的网址。
- domain.com/index.php?id=1234 => domain.com/1234
- domain.com/a.php?id=1234 => domain.com/a/1234
- domain.com/b.php?id=4321 => domain.com/b/4321
- domain.com/gallery.php => domain.com/gallery
其中,index检查数据库并重定向到正确的页面(a,b,c.php - ect),如果没有找到有效ID,则重定向到gallery.php。
我可以自己编写适用于每种情况的 RewriteRule,但我不知道如何编写它来处理所有这些情况而不会越过规则。
这是我当前的 Mod_rewrite .htaccess 文件:
RewriteEngine On
RewriteCond %{REQUEST_URI} !/gallery$ #excludes case 4
RewriteRule ^(.*)$ index.php?id=$1 #handles case 1
RewriteRule ^(.*)/(.*)$ $1.php?id=$2 #handles cases 2 and 3
RewriteCond %{REQUEST_URI} /gallery$
RewriteRule ^/gallery$ /gallery.php [L] #handles case 4
这会导致所有内容都重定向到 domain.com/gallery.php 并导致尝试过多重定向时出错。即使我输入 domain.com/a/1234,也会被重定向到 domain.com/a/gallery.php
我如何更好地分离这些案例 - 如果它在案例 1 之后匹配 domain.com/1234 停止 - 如果它与案例 2 和 3 匹配 domain.com/a/1234 停止 - 如果它用于 domain.com/gallery 之后停止domain.com/gallery.php 被称为...
感谢大家的帮助!