我在 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
答案 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]