我想在此重写规则中允许使用点:
RewriteRule ^([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/?$ index.php?D1=$1&D2=$2&D3=$3 [NC,QSA,L]
RewriteRule ^([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/?$ index.php?D1=$1&D2=$2 [NC,QSA,L]
RewriteRule ^([a-zA-Z0-9\-]+)/?$ index.php?D1=$1 [NC,QSA,L]
如果我使用这个:
RewriteRule ^([a-zA-Z0-9\-\.]+)/?$ index.php?D1=$1 [NC,QSA,L]
根目录中D1的值是" index.php"而不是空值。
有关于此的任何想法吗?
由于
答案 0 :(得分:0)
它可能并不明显,但如果你考虑一下,你会得到它。 Point已经有了内部重写规则。
因此,如果您打开网站example.com
,实际上会获得example.com/index.php
。
现在添加一些自定义重写规则。第一个没有包含点,因此index.php
不匹配,但第二个包含点数,因此([a-zA-Z0-9\-\.]+)
也会匹配index.php
,因此会将其重写为index.php?D1=index.php
非常简单:像这样排除index.php:
RewriteCond %{REQUEST_URI} !^/?index\.php
RewriteRule ^([a-zA-Z0-9.-]+)/?$ index.php?D1=$1 [NC,QSA,L]