簡體   English   中英

使用mod_rewrite重寫URL,使其對用戶和SEO更友好

[英]Using mod_rewrite to rewrite the URL making it more user and seo friendly

我希望重寫我的URL,以便它對SEO和用戶友好,我花了很多時間在此上,並努力使我了解重寫過程的工作原理。

我遇到的問題之一是,我的網站使用子域分為幾部分。該網站是一個比較網站,可讓您查找產品的詳細信息或將該產品與其他產品進行比較。 攝像頭部分位於“ cameras.specced.co.uk”下,將來還會有其他部分,例如“ drones.specced.co.uk”和“ phones.specced.co.uk”。

當前,例如,我通過數字ID加載頁面信息,這是獲取佳能1300D所有規格的URL:

http://cameras.specced.co.uk/compare.php?i=98

我想改寫成這樣的東西

http://cameras.specced.co.uk/compare/98

對於並排比較兩種產品的頁面,URL當前如下所示(URL獲取佳能1300D VS尼康D5300的比較)

http://cameras.specced.co.uk/compare.php?1=98&2=111

我想將此網址改寫成這樣的內容

http://cameras.specced.co.uk/compare/98-vs-111 

這是我想出的,但是不起作用

RewriteRule    ^i/([0-9]+)/?$    compare.php?i=$1    [NC,L]    # Handle product requests

我非常感謝您的幫助

您正在尋找類似的東西:兩個規則,通常首先是更專門的規則:

RewriteEngine on
RewriteRule ^/?compare/(\d+)-vs-(\d+)$ /compare.php?i1=$1&i2=$2 [END]
RewriteRule ^/?compare/(\d+)$ /compare.php?i=$1 [END]

這些規則將在動態配置文件(“ .htaccess”)和實際的http服務器主機配置中起作用。 如果決定使用動態配置文件,則需要注意首先實際啟用它們的解釋。 看一下它的AllowOverride指令: https : //httpd.apache.org/docs/2.4/mod/core.html#allowoverride

如果您使用的是apache http服務器的舊版本,則可能必須將[END]標志替換為[L]標志。 然后,您將獲得內部服務器錯誤,否則將在http服務器錯誤日志文件中找到相應的提示。

一個一般提示:您應該始終喜歡將此類規則放在http服務器(虛擬)主機配置中,而不是使用動態配置文件( .htaccess樣式文件)。 眾所周知,這些文件容易出錯,難以調試,並且確實降低了服務器的速度。 僅當您無法控制主機配置(閱讀:真正便宜的托管服務提供商)或者您的應用程序依賴於編寫自己的重寫規則(這顯然是安全噩夢)時,才提供它們作為最后的選擇。 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM