Apache 允许在RewriteRule.htaccess中使用点字符
我想在此重写规则中允许点:Apache 允许在RewriteRule.htaccess中使用点字符,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我想在此重写规则中允许点: 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\-]+)/?$ in
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”,而不是空值
有什么想法吗
谢谢这可能并不明显,但如果你仔细想想,你会明白的。关键是您已经有了一个内部重写规则 因此,如果你打开你的网站
example.com
,你实际上会得到example.com/index.php
现在添加一些自定义重写规则。第一个没有点include soindex.php
不匹配,但第二个有点include so([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]
这可能并不明显,但如果你仔细想想,你就会明白。关键是您已经有了一个内部重写规则 因此,如果你打开你的网站
example.com
,你实际上会得到example.com/index.php
现在添加一些自定义重写规则。第一个没有点include soindex.php
不匹配,但第二个有点include so([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]
嗨,网络设计师,谢谢!但如果我使用第二个条件,停止工作!我更新了问题。嗨,网络设计师,谢谢!但如果我使用第二个条件,停止工作!我更新了问题。