簡體   English   中英

如何使用.htaccess清理URL

[英]How to Clean URL using .htaccess

我很沮喪地尋找使用.htaccess干凈URL:

我的.htaccess代碼:

RewriteEngine on
RewriteRule ^([^/\.]+)/?$ $1.php  [L,QSA]
RewriteRule ^/([0-9]+)$ product.php?id=$1

第一條規則完全有效地隱藏了我URL的.php擴展名,但第二條規則不起作用。 單擊產品列表上的產品ID后,我的產品的URL。 我現在正在使用免費主機。 freehost.16mb.com/product?id=156

我的產品列表代碼鏈接是:

<a href="product.php?id=<?php echo $row['ID']; ?>"> link 1 array </a>

因此,我將嘗試使用.htaccess清理URL到freehost.16mb.com/product/156中

我正在使用上面的.htaccess代碼,但對我而言不起作用。 我需要協助。

您的第二條規則未在ID之前提供前導/product ,並且HTML錨點使用的是您要重寫的格式-需要對此進行交換。

將您的錨標記更改為以下內容:

<a href="/<?php echo $row['ID']; ?>

您還需要通過添加QSAL標志,並從規則的模式中刪除前導斜杠來稍微修改一下規則:

RewriteRule ^([0-9]+)$ product.php?id=$1 [QSA,L]

完成此操作后, /1234將重寫為/product.php?id=1234

但是,如果您希望包含/product段,請改用以下這些:

<a href="/product/<?php echo $row['ID']; ?>
RewriteRule ^product/([0-9]+)$ product.php?id=$1 [QSA,L]

只需在您的.htaccess中使用它:

Options +FollowSymLinks
RewriteEngine on
RewriteRule product/id/(.*)/ product?id=$1
RewriteRule product/id/(.*) product?id=$1

這會將您的URL變成:

freehost.16mb.com/product/id/156

要擁有freehost.16mb.com/product/156,只需從RewriteRule中刪除id /,則它將是:

Options +FollowSymLinks
RewriteEngine on
RewriteRule product/(.*)/ product?id=$1
RewriteRule product/(.*) product?id=$1

----替代----

RewriteCond %{QUERY_STRING} (^|&)id=156($|&)
RewriteRule ^freehost\.16mb\.com/product$ /freehost.16mb.com/product/156?&%{QUERY_STRING}

暫無
暫無

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

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