2012-02-11 126 views
3

我需要一個SEO友好的URL來做一些小事。 當前網址看起來像mysite.com/ny.php?c=[COUNTY]&t=23兩部分SEO友好的URL

'c'是縣名,'t'是鎮的id號。

我發現在前面的問題該解決方案:

<IfModule mod_rewrite.c> 
RewriteEngine on 

RewriteRule ^blog\/([0-9]+)\/.*$ /blog.php?post=$1 [L] 
</IfModule> 

/blog.php?post=10

我怎麼能使用類似的東西,但也有縣裏它/blog/10/any-old-bit-of-text/結果。 那麼mysite.com/ny.php?c=[COUNTY]&t=23會變成mysite.com/ny/[COUNTY]/23/town-name

回答

1

在這裏你去:

RewriteRule ^(ny)/(.+)/(\d+)/(.+)/?$ /$1.php?c=$2&t=$3 [L,QSA] 

FYI QSA標誌是強制性的,因爲你正在改變查詢字符串。

RewriteRule ^blog/([0-9]+)/.*$ /blog.php?post=$1 [L,QSA] 
+0

我從來沒有在教程中看到過QSA標誌。你確定它是強制性的嗎? – bozdoz 2012-02-11 17:42:14

+0

@bozdoz如果你不知道,不要評論!先閱讀:[Flag QSA](http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa)Apache Docs – ThinkingMonkey 2012-02-11 17:43:24

+0

這是一個好主意。這不是「強制性的」。所以,對你的評論...:| – bozdoz 2012-02-11 17:50:00

0

如果我明白你問的問題,你要mod_rewrite的代碼:即使在

我相信它會是這樣的:

<IfModule mod_rewrite.c> 
RewriteEngine on 

RewriteRule ^ny/(.*?)/([0-9]+)/.*$ ny.php?c=$1&t=$2 [L] 
</IfModule> 

注:我敢肯定,你不需要逃避正斜槓。如果ny.php位於主目錄中,它不需要前面的斜線。

+0

太好了,真實@bozdoz。它似乎沒有工作。 是否有我顯示它試圖重定向到的URL?意思是,我可能希望它去'ny.php /?c = Orange&t = 5',實際上它正在嘗試重定向到'ny.php //?c = Orange&t = 5'或類似於添加空格的東西。 – Tim 2012-02-11 21:32:58

+0

您是否收到錯誤消息?它會帶你到哪個頁面?有沒有跡象表明它一直在工作?可能有幾個問題。您的服務器可能會要求您重寫基本URL,因此在打開引擎後可能必須包含「RewriteBase /」。而且,它可能格式不正確。查看您的編輯程序是否可以檢測.htaccess文件的格式,和/或更改格式。 – bozdoz 2012-02-11 23:16:59

+0

感謝您的回覆@bozdoz。我知道mod_rewrite正在工作。我測試了一個維護頁面的重定向。當我放入「更清潔」的網址時,它只是404上的我。 – Tim 2012-02-12 00:47:04