2012-02-01 113 views
0

我是mod_rewrite的新成員,如果可能的話,需要一些幫助。如何使用mod_rewrite從我的URL中刪除查詢字符串?

這是我的舊的URL

www.mysite.com/web/page.php?c=categoryname 

我需要去改變它:我使用此代碼

www.mysite.com/web/page/categoryname.html 

,但它不工作:

RewriteEngine on 
    RewriteBase /web/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^/([^/]+)/?$ page.php?c=$1 [L] 

如何我可以修復上面的代碼來正確地重寫我的URL嗎? 編輯:

由於烏爾裏希Palha 我管理重定向的html文件,但CSS,JS等不重定向和網站看起來RLY不好,這是我現在使用的代碼,直到我將得到一個誰也會重定向css

RewriteEngine On 
    RewriteBase /web/ 

    #redirect www.mysite.com/web/page.php?c=categoryname to 
    #www.mysite.com/web/page/categoryname.html 
    #prevent internal redirect 
    RewriteCond %{ENV:REDIRECT_STATUS} !200 
    RewriteCond %{QUERY_STRING} (^|&)c=([^&]+)(&|$) [NC] 
    RewriteRule ^(page)\.php$ $1/%2.html? [NC,L,R=301] 

    #rewrite www.mysite.com/web/page/categoryname.html to 
    #www.mysite.com/web/page.php?c=categoryname 
    RewriteRule ^(page)/([-a-zA-Z0-9]+)\.html$ $1.php?c=$2 [L,NC] 

請問有沒有幫助?

回答

1

添加以下到.htaccess文件在您的網站的web目錄,替換你有上述規則。

RewriteEngine On 
RewriteBase /web/ 

#do not process css/js etc 
RewriteCond %{REQUEST_URI} \.(css|js|jpg|png) [NC] 
#alternatively you could skip all existing files. Comment previous line and uncomment next to do so 
#RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

#redirect www.mysite.com/web/page.php?c=categoryname to 
#www.mysite.com/web/page/categoryname.html 
#prevent internal redirect 
RewriteCond %{ENV:REDIRECT_STATUS} !200 
RewriteCond %{QUERY_STRING} (^|&)c=([^&]+)(&|$) [NC] 
RewriteRule ^(page)\.php$ $1/%2.html? [NC,L,R=301] 

#rewrite www.mysite.com/web/page/categoryname.html to 
#www.mysite.com/web/page.php?c=categoryname 
RewriteRule ^(page)/([-a-zA-Z0-9]+)\.html$ $1.php?c=$2 [L,NC] 
+0

感謝您的回答,我已將它粘貼到httacess文件中,當我點擊舊鏈接時,它會將我重定向到: http://mysite.com/web/page/categoryname.html?c=categoryname,以及它給404錯誤 – JoinOG 2012-02-01 22:23:28

+0

現在編輯後,它重定向我需要的補丁,但我找不到錯誤 – JoinOG 2012-02-01 22:33:14

+0

請完成它,它對我來說真的很重要。 – JoinOG 2012-02-01 22:38:24

1

你在規則的正則表達式是錯誤的—你缺少/page,並補充說,你不應該是一個可選的最後的斜槓,而忘記刪除.html部分。另外你的RewriteBase不應該有最後的斜線,你的規則不應該有一個前導斜線。

它總,應該是這樣的:

RewriteEngine on 
RewriteBase /web 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^page/([^/]+)\.html$ page.php?c=$1 [L] 
+0

我已經嘗試過了,也想說,.httacces文件是在WEB目錄..我應該等待看到它的工作? – JoinOG 2012-02-01 21:46:01

+0

我不明白你在問什麼。 – 2012-02-01 21:46:49

+0

我想改變我的鏈接的外觀,當我點擊www.mysite.com/web/page.php?c=categoryname它不會重定向新鏈接,如果我在瀏覽器上手動編寫新鏈接,我得到了404錯誤 – JoinOG 2012-02-01 21:49:20

相關問題