1

现在我正在使用下面给出的正则表达式

RewriteRule ^(love-wallpaper.php|quotes-wallpaper.php)+ wallpapers.php

重写love-wallpaper.phpquotes-wallpaper.php_wallpapers.php

我希望上面的规则不应该重写错误的 url,love-wallpaper.php&anything
但应该重写为 url,love-wallpaper.php?anything比如wallpapers.php

如何才能做到这一点?

示例:
URL likelove-wallpaper.php#asdfasdfasdf不应该重写,wallpapers.php
但 url likelove-wallpaper.php?aasdbfsbdf应该重定向到wallpapers.php
谢谢

4

2 回答 2

1

我不太清楚你在找什么,但是如果你想在quotes-wallpaper.php使用下面的规则后匹配一个有效的查询字符串

RewriteRule ^(love-wallpaper.php|quotes-wallpaper.php)+(?![\w&#\$!\(\)]+) wallpapers.php

它不会匹配&,#等。如果您不希望它们匹配和重写,则可以$wallpaper.php正则表达式字符类中放置更多符号,[]反之亦然。

注意:这将完全忽略传入 url 中的任何查询字符串。

于 2013-02-05T08:08:11.593 回答
1

您可能正在寻找以下内容:

RewriteRule ^(love|quotes)\-wallpaper\.php$ wallpapers.php [QSA]

我也转义了这个-字符,因为它在正则表达式中保留。

正则表达式/htaccess 的解释:

  • ^- “以。。开始”
  • (love|quotes)- 字符串“love”或字符串“quotes”
  • \-wallpaper\.php-- 带有并.转义的字符串“-wallpaper.php” 。
  • $- “结束必须在这里”
  • [QSA]将您的 URL 参数 ( url.php?my=parameter) 发送到wallpapers.php页面上。

您不能决定不匹配url.php#hash,因为 URL 哈希不能用于 .htaccess 匹配,因为它们永远不会发送到服务器 - 请参阅Redirect URL with hash using .htaccess file

于 2013-02-05T09:13:24.033 回答