2012-11-27 77 views
1

我有一個網站,我的連接是這樣的:改寫與.htacces網址

a href="?lang=en&p=3" 

我的網址是這樣的:

http://www.mywebsite.com/?lang=en&p=3 

,但我想我的網址變成了這個樣子:

http://www.mywebsite.com/english/about-us 

我知道你有這樣的事情:

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^([a-zA-Z]+)/([0-9]+)/$ ?lang=$1&p=$2 

,但它不工作...

有人可以幫我這個.htaccess文件?

我必須改變我的href網址嗎?

在此先感謝!

親切的問候

+0

您是否在使用任何CMS?您需要將您的網址轉發給http://www.mywebsite.com/?lang=english&p=about-us,並使用PHP處理剩餘的網址,以便加載ID爲3的網頁。 – mushroom

+0

是的,我正在使用CMS ......所以這與.htaccess無關?我也可以在CMS中編輯它?有沒有可能舉一個例子呢? – user1511766

+0

您使用的CMS是什麼? wordpress,我猜? – StasGrin

回答

2

試試這樣的事情:

RewriteCond %{QUERY_STRING} ^lang=([a-zA-Z]*)&p=(.*)$ 
RewriteRule ^(.*)$ /%1/%2? [R=301,L] 


這將使301重定向來自:
http://www.mywebsite.com/?lang=en&p=3
到:
http://www.mywebsite.com/en/3

如果你想要一些其他重定向規則,修改該規則s滿足您的需求,例如根據其規則制定更具體的RewriteCond列表。

1

使用此硬編碼的頁面名稱,如果你的網站需要像p參數= 3

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule ^(.*)/about-us$ ./?lang=$1&p=3 [QSA] 
RewriteRule ^(.*)/another-page$ ./?lang=$1&p=4 [QSA] 
</IfModule> 

如果您修改您的網站,使其接受像p參數=約,我們就變得簡單了:

http://www.mywebsite.com/?lang=en&p=about-us

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule ^(.*)/(.*)$ ./?lang=$1&p=$2 [QSA] 
</IfModule> 

如果你不改變你的href網址爲好,這一切是沒有意義的,因爲谷歌將不會看到明文的URL(沒有人會)連如果他們工作。

+0

感謝您的幫助:)我嘗試過,它的工作,但現在我的整個風格都消失了?當我還沒有一個頁面(索引)我需要使用這樣的東西? RewriteRule ^(。*)$ ./?lang=$1 [QSA] – user1511766

+0

添加如index.php這樣的頁面可能會更安全,但./是當前目錄,所以即使您重命名頁面也是如此(如果它是一個目錄的默認頁面,如default.asp index.php home.php等),我從來沒有發現一個服務器/瀏覽器不能使用它 – FrancescoMM

+0

關於這種風格,RewriteRule可能會捕獲它,所以你必須要處理這個問題。如果你的風格在/css/style.css中,它將被轉換爲./?郎= CSS&P = style.css中。作爲一種解決方案,您可以像這樣硬編碼語言選項:RewriteRule ^(en | it | de | ru)/(。*)$ ./?lang=$1&p=$2 [QSA]但要小心它們不匹配其他您網站的文件夾。這樣,「en」將被視爲一種語言,而「css」將被視爲一個文件夾 – FrancescoMM