2012-01-20 80 views
2

Hy,我如何使用mod_rewrite製作規範URL(對於Facebook「解析」)。Mod-Rewrite「Canonical URL's」

例子: 我: example.com/index.php?page= eventdetails & ID =

我會做一個canonincal URL,它應該是這樣的:

example.com/ eventdetails/241/有些文字會被腳本忽略

我用這個例子中測試,但它不工作:

RewriteEngine on 
RewriteRule ^/eventdetails/([0-9]+)/$ index.php?show=eventdetails&id=$1 

.htaccess文件是在「家」的方向發展。

我沒有找到任何解決方案確切的這個例子@谷歌,所以我希望有人能幫助我!

回答

7

嘗試這種情況:

RewriteEngine on 
RewriteBase/
RewriteRule ^eventdetails/([0-9]+)/?$ index.php?show=eventdetails&id=$1 [L,NC] 
RewriteRule ^eventdetails/([0-9]+)/([a-z0-9\-_]+)/?$ php.php?show=eventdetails&id=$1&name=$2 [L,NC] 

/?裝置在端部在任意的/。因此example.com/eventdetails/241/example.com/eventdetails/241將適用於此規則。如果事件名稱未被使用,第一個將只使用第一個規則。

而這個Url將使用第二個(如果事件名稱正在使用):example.com/eventdetails/241/event-name/。現在在這裏,我不推薦+,因爲它不是真正的SEO友好,也許有些人會接受它,但有些不是。我推薦-

我加了L以防萬一你有其他規則和NC標誌的情況下。

L: [L]標誌導致mod_rewrite停止處理規則集。在大多數情況下,這意味着如果規則匹配,則不會處理更多規則。這對應於Perl中的最後一個命令或C中的break命令。使用此標誌來指示當前規則應立即應用,而不考慮其他規則。

NC:使用[NC]標誌會導致RewriteRule以不區分大小寫的方式進行匹配。也就是說,它不關心在匹配的URI中字母是大寫還是小寫。

from:http://httpd.apache.org/docs/2.3/rewrite/flags.html

+0

謝謝!它「近乎成功」,我會在URL末尾添加一些「隨機文本」,其中包含「Event Title」,它應該/可以是這樣的: example.com/eventdetails/43/Brennan+Heart + MCM +費爾德巴赫 再次感謝您的回答,並對我的英語不好。 –

+0

沒問題,我更新了我的回答 –

+0

謝謝!我忘了說,標題可以被腳本忽略,我從ID讀取內容。但是,我是一個假人:-X 我這樣解決: RewriteRule^eventdetails /([0-9] +)/(。*)/?$ index.php?show = eventdetails&id = $ 1 [L,NC] 我希望這是「最好的」方式。 謝謝! Chris –