现在我正在使用下面给出的regex
RewriteRule ^(love-wallpaper.php|quotes-wallpaper.php)+ wallpapers.php
将love-wallpaper.php
和quotes-wallpaper.php
重写为wallpapers.php
我希望以上规则不应该重写错误的url,如love-wallpaper.php&anything
但应该像love-wallpaper.php?anything
到wallpapers.php
一样重写为url
如何做到这一点?
示例:
类似love-wallpaper.php#asdfasdfasdf
的Url不应重写为wallpapers.php
但是类似love-wallpaper.php?aasdbfsbdf
的url应该重定向到wallpapers.php
感谢
您可能正在寻找以下内容:
RewriteRule ^(love|quotes)-wallpaper.php$ wallpapers.php [QSA]
我还转义了-
字符,因为它在regex中是保留的。
regex/htaccess的解释:
^
-"以"开头(love|quotes)
-字符串"爱"或字符串"引号"-wallpaper.php
-转义了包含-
和.
的字符串"-wallpaper.php"$
-"结束必须在这里"[QSA]
将您的URL参数(url.php?my=parameter
)发送到wallpapers.php
页面
您不能决定不匹配url.php#hash
,因为URL哈希不能在.htaccess匹配中使用,因为它们从未发送到服务器-请参阅使用.htacccess文件重定向带有哈希的URL
我不太清楚你在寻找什么,但如果你想在quotes-wallpaper.php
之后匹配有效的查询字符串,请使用以下规则
RewriteRule ^(love-wallpaper.php|quotes-wallpaper.php)+(?![w&#$!()]+) wallpapers.php
在wallpaper.php
之后,它将不匹配&
、#
、$
等。如果不希望它们匹配并重写,可以在正则表达式字符类[]
中放入更多符号,反之亦然。
注意:这将完全忽略传入url中的任何查询字符串。