簡體   English   中英

如何使用 php 和 .htaccess 生成 SEO 友好的導航鏈接?

[英]How do I generate SEO friendly navigation links using php and .htaccess?

我希望我可以有 SEO 友好的導航鏈接,例如example.com/aboutexample.com/loginexample.com/register ,但我網站的鏈接類似於example.com/public/pages/about.phpexample.com/public/pages/login.php等。我嘗試使用在互聯網上找到的以下代碼進行操作:

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} /public/pages/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]

RewriteRule ^((?!public/pages/).*)$ public/pages/$1 [L,NC]

通過使它們成為example.com/login.php,代碼運行良好,但問題是頁面顯示為無樣式(沒有CSS)。

這是我的導航:

                <li class=""><a href="index.php">Home</a></li>
                <li><a href="./public/pages/request.php">Requests</a></li>
                <li><a href="./public/pages/courses.php">Programs</a></li>
                <li><a href="./public/pages/trending-tut.php">Tutorials</a></li>
                <li><a href="public/pages/blog.php">Discussion Room</a></li>
                <li><a href="./public/pages/agriculture.php">Agri-Business</a></li>
              </ul>
              <ul class="nav navbar-nav navbar-right">
                
                <li><a href="./public/pages/register.php"><span class="glyphicon glyphicon-user"></span> Register</a></li>
                <li><a href="./public/pages/login.php"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
              </ul>```

這將是內部重寫該文件夾中存在相應 php 文件的任何路徑的通用方法:

RewriteEngine On
RewriteBase /
RewriteCond /public/pages%{REQUEST_URI}.php -f
RewriteRule ^ /public/pages%{REQUEST_URI}.php [QSA,END]

另一種方法是明確列出您要使用的那些短 URL:

RewriteEngine On
RewriteBase /
RewriteRule ^/?about$ /public/pages/about.php [QSA,END]
RewriteRule ^/?login$ /public/pages/login.php [QSA,END]
RewriteRule ^/?register$ /public/pages/register.php [QSA,END]

這顯然意味着更多的維護工作,但保留了自由。

您還可以嘗試重定向仍然使用長符號的客戶端:

RewriteEngine On
RewriteBase /

RewriteRule ^/?public/pages/(.+)\.php$ /$1 [QSA,R=301,END]

RewriteCond /public/pages%{REQUEST_URI}.php -f
RewriteRule ^ /public/pages%{REQUEST_URI}.php [QSA,END]

您需要使用新的匿名瀏覽器 window 對此進行測試,以防止被緩存的結果所迷惑。 並且您應該從 302 重定向開始,並且只有在您確信您的解決方案是最終的時才將其更改為 301。


一般來說,您應該更喜歡在真正的 http 服務器的主機配置中實施此類規則。 如果您無法訪問實際配置,分布式配置文件(“.htaccess”)只是最后一個選項。 但是它們也有缺點,您需要注意在您的 http 服務器中完全考慮它們。

暫無
暫無

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

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