很简单,有人可以告诉我以下之间的区别请:
RewriteRule ^sitemap/.*$ /appindex.php [L]
RewriteRule ^sitemap/?$ /appindex.php [L]
答案 0 :(得分:3)
这是关于正则表达式表示法的问题。它与重写规则本身的逻辑几乎没有关系。请注意,正则表达式有很好的介绍。您还想使用其中一个在线正则表达式实用程序来试验模式...
RewriteRule ^sitemap/.*$ /appindex.php [L]
这个匹配所有对以文字字符串sitemap
开头的URL的请求,后跟一个斜杠和一些更多但是任意的字符。
这方面的例子是:
sitemap/index.xml
sitemap/folder/sitemap.xml
RewriteRule ^sitemap/?$ /appindex.php [L]
这个匹配所有对以文字字符串sitemap
开头的URL的请求,可能后跟斜杠,仅此而已。
唯一匹配的例子显然是:
sitemap
sitemap/
请注意,此类规则不考虑http get参数,这些在此级别无关紧要,因为它们不是URL本身的一部分,而是参数。所以以下也匹配:
sitemap?id=test
请注意,两个规则仅在.htaccess
样式文件中使用时才有意义。他们不在真正的http服务器主机配置中工作。这是因为真实配置适用于绝对路径,而.htaccess
样式文件适用于相对路径,因此路径没有前导斜杠(/sitemap/...
与sitemap/...
)。通常,总是更喜欢在实际主机配置中放置重写规则。 .htaccess
样式文件非常容易出错,难以调试,而且它们确实减慢了服务器速度,通常一无所获。它们仅针对两种情况提供:无法访问主机配置的人(阅读:非常便宜的托管提供商)和需要动态更新自己配置的应用程序(这是一个安全噩梦,所以请三思而后行)。