也许有人可以帮我改写重写规则。 我在Apache中使用以下重写规则:
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/?$ /index.php?q=$1&m=$2&id=$3&p=$4 [L]
这适用于输入网址:www.domain.com/q/m/id/p
但是如何使用相同的重写规则访问网址:www.domain.com/q/m/id? Last参数(& p = $ 4)应该是可选的
还要注意
我的style.css文件位于www.domain.com/theme/main/style.css
当我在重写中使用4个值时,规则不应该覆盖style.css。
非常感谢任何帮助!
的Fab
答案 0 :(得分:0)
如果只有“最后一个参数(& p = $ 4)应该是可选的”,则不需要4个规则。只需要2条规则。
除非您希望style.css
成为第一条规则中的参数之一,否则您也应将其排除。如果不是这种情况,请在下面的第一条规则之前删除相应的行。
此外,通过添加NOT条件确保规则不会进入无限循环非常重要。
你可以试试这个:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !style\.css [NC]
RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?q=$1&m=$2&id=$3 [NC,L]
RewriteCond %{REQUEST_URI} !style\.css [NC]
RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ index.php?q=$1&m=$2&id=$3&page=$4 [NC,L]
对于永久和可见的重定向,将[NC,L]替换为[R = 301,NC,L]