簡體   English   中英

用HTACCESS重寫動態URL

[英]Re-writing Dynamic URL with HTACCESS

我已經在線閱讀了一些教程,並在這里搜索了其他幾個問題,但是我似乎無法掌握使用HTACCESS文件對動態URL進行重寫的方法。

我有以下網址:

products.php?cat=2
products.php?cat=3
products.php?cat=4

我希望他們只說產品/ 2

equipment.php?cat=2&subCat=1
equipment.php?cat=2&subCat=2
equipment.php?cat=2&subCat=3

我想要這些例如說equipment / 2/1

product.php?id=3010-Z89CH24

我想以這些為例說product / 3010-Z89CH24

但是到目前為止,只是嘗試更改products.php頁面,我這樣做:

    RewriteEngine On
RewriteCond %{HTTP_HOST} ^*******\.com [NC]
RewriteRule (.*) http://www.*******.com/$1 [L,R=301]

Options +FollowSymLinks

RewriteRule ^products/'^([1-9][0-9]{0,2})'$ http://www.*******.com/products.php?cat=/$2 [L] 
# REMOVE PHP EXTENSIONS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]

問題是我不認為結尾部分“ / $ 2”是正確的,也不確定其余部分:/

不管哪種方式,它對我都不起作用,我被困在並且難以理解它:(

有人能幫助我嗎?

通過httpd.conf啟用mod_rewrite.htaccess ,然后將此代碼放入DOCUMENT_ROOT/.htaccess文件中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^.]+)\.php\?cat=([^\s&]+)&subcat=([^\s&]+)\s [NC]
RewriteRule ^ /%1/%2/%3? [R=301,L]

RewriteRule ^([^/.]+)/([^/]+)/([^/]+)/?$ /$1.php?cat=$2&subcat=$3 [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^.]+)\.php\?cat=([^\s&]+)\s [NC]
RewriteRule ^ /%1/%2? [R=301,L]

RewriteRule ^([^/.]+)/([^/]+)/?$ /$1.php?cat=$2 [L,QSA]

您的問題是您的正則表達式是錯誤的-我建議您查看某種基本的正則表達式教程,並注意捕獲組的提及。

如果不進行檢查-並假設您的基於數字的限制是正確的-我猜您想要這樣的規則:

RewriteRule  ^/products/([1-9][0-9]{0,2})$  /products.php?cat=$1 [L]

如果您需要保留現有的查詢字符串,則可能還需要QSA標志。

暫無
暫無

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

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