[英]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']; ?>
您還需要通過添加QSA
和L
標志,並從規則的模式中刪除前導斜杠來稍微修改一下規則:
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.