2013-09-05 61 views
1

是否有可能一個前綴htaccess的重寫規則前綴一個友好的URL

例如可變量被用來作爲前綴的網址

website.com/ $變量 - 用於出售/

 /cupcakes-for-sale/ 
     /pies-for-sale/ 
     /flans-for-sale/ 

的想法是,然後使用該變量來顯示所有的蛋糕/餡餅/銷售flans

何這會寫成重寫規則嗎?它甚至有可能嗎?

感謝

+0

我不確定你想說什麼,但你可以創建一個URL,如'domain.com/cupcakes-for-sale /'和一個RewriteRule,它將內部重定向該URL更具體的單詞紙杯蛋糕到您的PHP文件來顯示你想要的數據,例如'read.php?recipe = cupcakes'。 – Prix

+0

我想我錯過了一些東西,新的htaccess所以不完全確定我必須把。我會再試一次。我想我想要的東西像?蛋糕=紙杯蛋糕,然後追加一個待售/在它的結尾,以便它看起來像紙杯蛋糕出售/或出售餡餅。是否有可能重寫這樣的動態網址?希望清理它一點@Prix謝謝=) – Ultigma

+0

我已經做了編輯=)希望它會幫助@Prix – Ultigma

回答

1

第一條規則將負責將您的醜陋URL重新定向爲Friendly。

第二條規則將在內部重定向它,以便瀏覽器URL保持友好的URL,同時爲頁面的內容提供服務。

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

# Redirect /?cake=anything to /anything-for-sale/ 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+\?cake=([^&\s]+) [NC] 
RewriteRule^/%1-for-sale/? [R=302,L] 

# Internally forward /anything-for-sale/ to /?cake=anything 
RewriteRule ^([^-]+)-for-sale/?$ /?cake=$1 [NC,L] 

記住我使用R=302它總是最好使用302這意味着臨時重定向,同時也使永久作爲永久將緩存中的信息到瀏覽器之前測試新規則。一旦該規則被確認爲按預期工作變化R=302R=301

0

要提取的變量,你需要在正確的方式使用正則表達式括號,然後就可以用$1來獲取組:

RewriteRule ^([^-]+)-for-sale/$ /target.php?variable=$1 [L] 

「目標」的部分是劇本你用來顯示「變量」。既然你的問題沒有提到這是什麼,你必須弄清楚。