問題描述
我本質上不是 PHP 開發人員,我被要求在現有的 PHP 網站上執行一些 SEO.
I am not a PHP developer at heart and I have been asked to perform some SEO on an existing PHP website.
我注意到的第一件事是丑陋的 URL,所以我想讓這些 URL 重寫為更具信息性的內容.以下是所有可能的模式:
The first thing I noticed was the ugly URLs so I want to get these to rewrite to something more informative. Here are all the possible patterns:
/index.php?m=ModuleType&categoryID=id
/index.php?m=ModuleType&categoryID=id&productID=id
/index.php?page=PageType
/index.php?page=PageType&detail=yes
所以基本上我想做的是將這些轉換成類似的東西:
So basically what I want to do is convert these into something like:
/ModuleType/Category
/ModuleType/Category/ProductName
/Page
/Page
在任何建議或示例都很棒之前,我還沒有使用過 mod_rewrite!
I haven't used mod_rewrite before any advice or examples would be great!
謝謝.
推薦答案
mod_rewrite 寧愿被用來做相反的事情:在內部將 /ModuleType/Category/ProductName
的請求重寫為 /index.php?m=ModuleType&categoryID=id&productID=id代碼>.在文檔中使用新 URL 是您的應用程序的工作.
mod_rewrite would rather be used to do the opposite: rewrite requests of /ModuleType/Category/ProductName
internally to /index.php?m=ModuleType&categoryID=id&productID=id
. Using the new URLs in the documents is the job of your application.
編輯 下面是一個將參數化網址轉換為新網址的函數示例:
Edit????Here’s an example of how a function might look like that turns your parameterized URLs into the new ones:
function url($url, $rules) {
$url = parse_url($url);
parse_str($url['query'], $url['query']);
$argNames = array_keys($url['query']);
foreach ($rules as $rule) {
if ($rule[0] == $url['path'] && array_keys($rule[1]) == $argNames) {
$newUrl = $rule[2];
foreach ($rule[1] as $name => $pattern) {
if (!preg_match('/'.addcslashes($pattern, '/').'/', $url['query'][$name], $match)) {
continue 2;
}
$newUrl = str_replace('<'.$name.'>', $match[0], $newUrl);
}
return $newUrl;
}
}
return $url;
}
$rules = array(
array(
'/index.php',
array('m'=>'.*', 'categoryID'=>'.*', 'productID'=>'.*'),
'/<m>/<categoryID>/<productID>'
)
);
echo '<a href="' . url('/index.php?m=ModuleType&categoryID=categoryID&productID=productID', $rules) . '">/ModuleType/Category/ProductName</a>';
這篇關于如何使用 mod_rewrite 顯示 SEO 友好的 URL?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!