现在我正在使用下面给出的正则表达式
RewriteRule ^(love-wallpaper.php|quotes-wallpaper.php)+ wallpapers.php
将love-wallpaper.php
和quotes-wallpaper.php
重写为wallpapers.php
我希望上面的规则不应该像love-wallpaper.php&anything
一样重写错误的网址
但是应该重写为love-wallpaper.php?anything
到wallpapers.php
如何做到这一点?
示例:
像love-wallpaper.php#asdfasdfasdf
这样的网址不应重写为wallpapers.php
但是love-wallpaper.php?aasdbfsbdf
之类的网址应该重定向到wallpapers.php
感谢
答案 0 :(得分:1)
我不太清楚你在寻找什么,但是如果你想在quotes-wallpaper.php
使用以下规则后匹配有效的查询字符串
RewriteRule ^(love-wallpaper.php|quotes-wallpaper.php)+(?![\w&#\$!\(\)]+) wallpapers.php
在&
之后,它不会与#
,$
,wallpaper.php
等匹配。如果你没有,你可以在正则表达式字符类[]
中添加更多符号我希望他们匹配和重写,反之亦然。
注意:这将完全忽略在url中传递的任何查询字符串。
答案 1 :(得分:1)
您可能正在寻找以下内容:
RewriteRule ^(love|quotes)\-wallpaper\.php$ wallpapers.php [QSA]
我还转义了-
字符,因为它在正则表达式中保留。
regex / htaccess的解释:
^
- “以”(love|quotes)
- 字符串“love”或字符串“quotes”\-wallpaper\.php
- 字符串“-wallpaper.php”,-
和.
已转义。$
- “结束必须在这里”[QSA]
将您的网址参数(url.php?my=parameter
)发送到wallpapers.php
页面。您无法决定不匹配url.php#hash
,因为网址哈希不能用于.htaccess匹配,因为它们永远不会发送到服务器 - 请参阅Redirect URL with hash using .htaccess file