2010-09-12 62 views
0

我試圖使用modrewrite將我的url從/foo.php更改爲/ foo,並將/foo.php?lang=en更改爲/ en/foo。我的問題是,我認爲我需要使用301重定向將.php-less地址移至.php地址,否則我的排名將在這兩個地址之間進行分割。但是,如果我使用[R = 301]地址在酒吧改變.php一個使我漂亮的url努力毫無用處。我該怎麼辦?使用mod_rewrite和SEO問題刪除.php擴展

我環顧四周尋找任何問題\教程我可以找到,但我不能完全理解modrewrite。我的主要問題是,如果我更改我的.htaccess文件,然後重新訪問一個已訪問的頁面,新的.htaccess不起作用,但以某種方式緩存舊的結果使修正成爲一個真正的痛苦。你知道解決方法嗎?

謝謝

Mokuchan

回答

0

你絕對必須看的Apache mod_rewrite的模件和重寫URL的總體思路。

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

+0

是的,我看了一下,有一個大致的想法,但我的問題更多的是搜索引擎優化(以及爲什麼它的緩存我的地址...啊) – Mokuchan 2010-09-12 23:57:23

+0

@ Mokuchan - 如果您訪問由[[R = 301]]規則處理的URL,您的瀏覽器可能已緩存重定向,並自動將您指向備用資源,而無需首先訪問服務器。不過,您需要更具體地瞭解您所做的更改,但這些更改並未反映出來。 – 2010-09-13 00:03:56

+0

我想你明白了!會發生什麼是我改變了重寫規則,它顯示了之前未訪問過的頁面上的新行爲以及我已經訪問過的頁面上的舊行爲(例如,在舊頁面中添加.php 2次(我的第一個正則表達式的錯誤行爲)和.php 1次在新的) – Mokuchan 2010-09-13 18:17:25

1

聽起來多視圖將不是重寫URL一個更好的解決方案。只要把它放在你的.htaccess。實際上,如果我輸入stackoverflow.com/pages,它將首先查找名爲pages的目錄,如果找不到它,則爲文件。然後您可以有stackoverflow.com/pages/view/some/page其中/view/some/page是查詢。

Options Indexes FollowSymLinks Includes MultiViews 

編輯要得到/view/some/page/使用$_SERVER['PATH_INFO'];

+0

似乎對我很好...我仍然需要改變頁面?lang = en到/ en/page!我想我需要把代碼放在代碼後面,這樣它才能首先檢索文件,然後應用url trasformation。我對麼? – Mokuchan 2010-09-12 23:56:36

+0

我不認爲使用'MultiViews'是個更好的解決方案,個人... – 2010-09-13 00:02:05

+0

這不是MultiViews的真正目的,它是爲自動內容協商而設計的。如果有不同語言的文檔有兩個(或更多)版本,MultiView允許服務器發送瀏覽器指定的文檔。 – Turnor 2010-09-13 00:09:05