.htaccess RewriteRule重复查询字符串

时间:2019-03-09 15:39:01

标签: .htaccess mod-rewrite formatting

我在 stackoverflow.com 上找到了几个与我的问题有关的主题,但是我还没有找到解决方案。

这是我的 .htaccess 代码:

RewriteEngine On
RewriteRule ^library-(.*)\.aspx$ index.php?page=library&image=$1 [NC,L,QSA]
RewriteRule ^information-(.*)\.aspx$ index.php?page=information&text=$1[NC,L,QSA]

很好,新的 URL格式可以正常工作:

https://example.com/library-image5000.aspx 要么 https://example.com/information-sometext.aspx

但是,谁能告诉我为什么该网址接受两个查询字符串?

https://example.com/library-image5000.aspx/information-sometext.aspx

1 个答案:

答案 0 :(得分:1)

这是因为您的正则表达式模式^library-(.*)\.aspx$也与URI /library-image5000.aspx/information-sometext.aspx相匹配。

您可以使用限制模式来代替全部(.*)。使用([^/]+),因为它匹配/以外的任何字符。

RewriteEngine On
RewriteRule ^library-([^/]+)\.aspx$ index.php?page=library&image=$1 [NC,L,QSA]
RewriteRule ^information-([^/]+)\.aspx$ index.php?page=information&text=$1[NC,L,QSA]