- 論壇徽章:
- 0
|
Canonical URLs
Description:
On some webservers there are more than one URL for a resource. Usually there are canonical URLs (which should be actually used and distributed) and those which are just shortcuts, internal ones, etc. Independent of which URL the user supplied with the request he should finally see the canonical one only.
Solution:
We do an external HTTP redirect for all non-canonical URLs to fix them in the location view of the Browser and for all subsequent requests. In the example ruleset below we replace /~user by the canonical /u/user and fix a missing trailing slash for /u/user.
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
RewriteRule ^/u/([^/]+)$ /$1/$2/ [R]
這段是apache 2.2手冊里面的原文。http://httpd.apache.org/docs/2.2/rewrite/rewrite_guide.html
我的配置內(nèi)容如下- RewriteEngine On
- RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
- RewriteRule ^/u/([^/]+$ /$1/$2/ [R]
復(fù)制代碼 apache的access.log相關(guān)文件如下
192.168.254.1 - - [02/Feb/2009:22:38:31 +0800] "GET /~testuser/ HTTP/1.1" 302 219
192.168.254.1 - - [02/Feb/2009:22:38:31 +0800] "GET /u/testuser/ HTTP/1.1" 404 207
192.168.254.1 - - [02/Feb/2009:22:38:37 +0800] "GET /u/testuser/ HTTP/1.1" 404 207
查了google也沒有找到答案,但是- RewriteEngine On
- RewriteRule ^/index.html$ /index.htm
復(fù)制代碼 這個是成功的,且index.html index.htm文件分別存在。
產(chǎn)生疑問,是否url rewrite需要重寫的目錄或文件是真實存在的?但是看文檔的意思好像并沒有這個意思,如果要實現(xiàn)將/~user的訪問重寫到/u/user/應(yīng)該如何在配置文件中實現(xiàn)?需要alias別名么?如果需要又怎么滿足于/home/user/public_html/目錄的對應(yīng)關(guān)系?
謝謝指教
[ 本帖最后由 addbe 于 2009-2-2 22:56 編輯 ] |
|