2013-07-25 101 views
0

將站點從IIS遷移到Apache,並且遇到RewriteRule問題我無法找到答案。使用.htaccess動態URL重寫

我需要重定向從www.domain.com/pubs/books/P123.aspwww.domain.com/books.php?p=P123

無論我怎麼努力,我得到一個404

能有人給我一個指針?我似乎找到的所有示例都有URL的動態部分。我是否首先需要去掉.asp?

Drupal也在這個網站上運行,所以有一些RewriteRules。

我曾嘗試最新的是:RewriteRule /pubs/books/P(.*)$.asp /books.php?p=$1

回答

0

首先:閱讀文件!你可以找到它here

它說:

Syntax: RewriteRule Pattern Substitution [flags]

在虛擬主機方面,該模式將首先對 相匹配的URL的主機名和端口之後的部分,並在查詢 字符串(例如「/app1/index.html」)之前。

在指南和htaccess的上下文中, 格局最初將針對文件系統路徑, 移除導致所述服務器向所述當前 重寫規則前綴匹配之後(例如,「APP1/index.html中」或「index.html的「取決於指令的定義在哪裏 )。

如果要匹配對 主機名,端口或查詢字符串,使用與 %{HTTP_HOST}%{SERVER_PORT}一的RewriteCond或%{QUERY_STRING}變量分別 。

(換句話說:開始以斜線的圖案永遠不會匹配,如果在.htaccess上下文)


首先,確保mod_rewrite的啓用和RewriteEngine敘述上(放RewriteEngine on在你的.htaccess)並允許在那裏(見文檔)。

假設這是在您的www根一.htaccess,這應該工作:

RewriteRule ^pubs/books/P(.*)\.asp$ books.php?p=$1 [L] 

語法^...$確保這是整個文件系統路徑。我們不想在這裏匹配http://example.com/some/more/paths/pubs/books/P123.asp並重寫。

+0

非常感謝。在這種情況下,這個問題最終成爲了.htaccess文件的一個原則,這意味着它永遠不會達到這個規則。您的回覆對於正確的語法也很有幫助。 –