2011-07-22 35 views
1

我有以下重寫規則:htaccess URL重寫:我在代碼中搞了些什麼?

Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} Catalog\/(string|page)\/ 
RewriteRule ^Catalog\/(string|page)\/([^\/]+)\/[^\.]+\.html$ Catalog/Catalog.php?$1=$2 

重寫規則是在同一行,但在這裏可以顯示在多行。

我的問題主要是我做錯了什麼。我沒有收到任何錯誤,所以Rewrite正在工作。我輸入到瀏覽器的地址是www.domain.com/Catalog/string/RT/Round_Tomato.html,我希望得到的是www.domain.com/Catalog/Catalog.php?string=RT

我在猜測我的正則表達式已經搞亂了,但一直沒有弄清楚。

回答

1

我認爲第一個錯誤的事情是在(。)=> www之前加上反斜槓。

^www\.([^/])/Catalog/([a-zA-Z0-9]+)/([a-zA-Z0-9_]+).html$ www.$1/Catalog/Catalog.php?string=$2 

這裏是一個明顯的例子:

重寫規則^ HTTP:(。*)//www.remotesite.com/ $ /鏡/的/ remotesite/$ 1

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

檢查了這一點:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^Catalog/(.+)/(.+)\.html$ /Catalog/Catalog.php?$1=$2 

你應該重新啓動Apache服務器 - 如果它是一個本地服務器 - (啓動和停止),你必須能夠訪問http://localhost/Catalog/string/RT.html

+0

吉茲我甚而沒有檢查上傳的評論。我在那裏有反斜槓,但似乎stackoverflow使用它作爲逃生。我要更新,以便代碼正確顯示。感謝您的閱讀,並且閱讀好,比我通過Google找到的要好。 –

+0

這是否解決了您的問題,或者我必須尋找更多的錯誤? –

+0

還沒有到現在,但我會仔細閱讀你給我看的內容,看看我是否能找到更多的錯誤,然後發回。 –