2013-02-05 65 views
1

現在我用下面的正則表達式給出使用htaccess的

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

改寫love-wallpaper.phpquotes-wallpaper.phpwallpapers.php

我想上面的規則不應該重寫錯誤的URL像love-wallpaper.php&anything
只重寫有效的URL 但應改寫爲url,如love-wallpaper.php?anythingwallpapers.php

這怎麼辦?

例子:
的url像love-wallpaper.php#asdfasdfasdf不應該重寫wallpapers.php
但像love-wallpaper.php?aasdbfsbdf網址應該重定向到wallpapers.php
感謝

+0

僅供參考,您的正則表達式也能匹配'愛wallpaperXphp ',因爲'.'意味着'äny字符'。使用'\ .'作爲普通的點字符。其次,爲什麼你用'+'這意味着重複一次或多次?你想接受'活壁紙.phplove-wallpaper.phplove-wallpaper.php'作爲一個URL嗎? – h2ooooooo

+0

謝謝h20,我對正則表達式知之甚多。 – Tarun

+0

@C1D,編輯問題你現在可以提供任何幫助 – Tarun

回答

1

你可能尋找以下:

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

我也逃過了-角色,因爲它在正則表達式的保留。

正則表達式/ htaccess的說明:

  • ^ - 字符串 「愛」 或字符串 「引號」
  • \-wallpaper\.php - - 字符串「-wallpaper.php
  • (love|quotes) 「開頭」 「與-.逃脫。
  • $ - 「端必須是我們在」
  • [QSA]發送您的網址參數(url.php?my=parameter)到wallpapers.php頁面。

你不能決定不匹配url.php#hash作爲URL哈希不能在.htaccess匹配使用,因爲他們從來沒有發送到服務器 - 見Redirect URL with hash using .htaccess file

+0

哇,謝謝你的工作 – Tarun

1

這不是很清楚,我說你在找什麼,但如果你想匹配一個有效的查詢字符串後,下面的規則quotes-wallpaper.php使用

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

它在wallpaper.php之後不會匹配&,#,$等。如果您不希望它們匹配並重寫,則可以在正則表達式字符類[]中放置更多符號。反之亦然。

注意:這將完全忽略任何查詢字符串中傳遞的url。

+0

http://www.example.com/celebs- wallpaper.php&ab,這個網址仍然重寫到wallpapers.php,雖然它的無效 – Tarun

+0

好吧現在再試一次。看看它是否有效。 –

+0

@MichelFeldheim yes'(?![\ w&#\ $!\(\)] +)'不在任何地方查找查詢字符串。它是在'.php'部分之後過濾沒有查詢字符串的url。 charcter不是'?'那麼它不是一個有價值的查詢字符串,你的觀點是無效的 –