我正在CakePHP 3的博客式網站上工作,併爲SEO目的制定了帶尾部斜線的規範化URL結構。爲了實現這一點,我在路由文件中構建了匹配尾部斜槓的請求,並在webroot
.htaccess
中做出正確的重定向以處理沒有結尾斜槓的請求。此外,在AppController
我重寫重定向功能,從控制器管理的重定向:在CakePHP 3中構建幫助器的URL時添加尾部斜槓3
function redirect($url, $status = null, $exit = true)
{
$routerUrl = Router::url($url, true);
if(!preg_match('/\.[a-z0-9]{1,5}$/', strtolower($routerUrl)) && substr($routerUrl, -1) != '/') {
$routerUrl .= '/';
}
parent::redirect($routerUrl, $status, $exit);
}
到目前爲止,一切都很好。
現在,我希望每次使用助手構建它們時都要創建帶有斜線的URL,例如FormHelper
或HtmlHelper
。例如:
$this->Form->create(null, [
'url' => ['controller' => 'Messages', 'action' => 'send']
]);
在這種情況下,URL輸出將爲:
/消息/發送
,我需要它是:
/消息/發送/
此刻,我在助手的選項中對網址進行了硬編碼以使其可以正常工作(而不是生產尚未)。如果我使用示例的選項,當提交表單時,由於.htaccess
重定向規則,POST數據丟失,因此在提交表單時,它將/messages/send重定向到/messages/send/。
在此先感謝,我爲我可憐的英語表示歉意,希望自己清楚。
只是不這樣做,無論您使用帶或不帶斜線的網址[**對搜索引擎優化**沒有影響](https://webmasters.googleblog.com/2010/04/to-slash-or -not-to-slash.html),只要確保你始終堅持一個或另一個。 – ndm
謝謝您的建議。可能我沒有正確表達自己。當我說「出於搜索引擎優化的目的」時,我的意思是我想堅持使用尾部的斜槓網址結構,而不是尾部的斜線本身會幫助我的搜索引擎優化。 – libarra
我同意@ndm - 但請參閱https://github.com/dereuromark/cakephp-trailing-slash – mark